myapp 203 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070
  1. commit cd338ef7a7ecbc103c643f8e2f3d468c91343839
  2. Author: siyana <2836115187@qq.com>
  3. Date: Fri Jun 6 19:51:52 2025 +0800
  4. da
  5. diff --git a/angular.json b/angular.json
  6. index e7c7b88..0a89b2c 100644
  7. --- a/angular.json
  8. +++ b/angular.json
  9. @@ -136,7 +136,8 @@
  10. "cli": {
  11. "schematicCollections": [
  12. "@ionic/angular-toolkit"
  13. - ]
  14. + ],
  15. + "analytics": "abe9b1bf-56fc-40c6-ab96-03076de3eccb"
  16. },
  17. "schematics": {
  18. "@ionic/angular-toolkit:component": {
  19. diff --git a/package-lock.json b/package-lock.json
  20. index 5af9a12..fdda060 100644
  21. --- a/package-lock.json
  22. +++ b/package-lock.json
  23. @@ -22,6 +22,7 @@
  24. "@capacitor/keyboard": "7.0.1",
  25. "@capacitor/status-bar": "7.0.1",
  26. "@ionic/angular": "^8.0.0",
  27. + "fmode-ng": "^0.0.83",
  28. "ionicons": "^7.0.0",
  29. "rxjs": "~7.8.0",
  30. "tslib": "^2.3.0",
  31. @@ -56,6 +57,13 @@
  32. "typescript": "~5.6.3"
  33. }
  34. },
  35. + "node_modules/@amap/amap-jsapi-loader": {
  36. + "version": "1.0.1",
  37. + "resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz",
  38. + "integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==",
  39. + "license": "MIT",
  40. + "peer": true
  41. + },
  42. "node_modules/@ampproject/remapping": {
  43. "version": "2.3.0",
  44. "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz",
  45. @@ -635,6 +643,22 @@
  46. "node": "^10 || ^12 || >=14"
  47. }
  48. },
  49. + "node_modules/@angular/cdk": {
  50. + "version": "19.2.18",
  51. + "resolved": "https://registry.npmmirror.com/@angular/cdk/-/cdk-19.2.18.tgz",
  52. + "integrity": "sha512-aGMHOYK/VV9PhxGTUDwiu/4ozoR/RKz8cimI+QjRxEBhzn4EPqjUDSganvlhmgS7cTN3+aqozdvF/GopMRJjLg==",
  53. + "license": "MIT",
  54. + "peer": true,
  55. + "dependencies": {
  56. + "parse5": "^7.1.2",
  57. + "tslib": "^2.3.0"
  58. + },
  59. + "peerDependencies": {
  60. + "@angular/common": "^19.0.0 || ^20.0.0",
  61. + "@angular/core": "^19.0.0 || ^20.0.0",
  62. + "rxjs": "^6.5.3 || ^7.4.0"
  63. + }
  64. + },
  65. "node_modules/@angular/cli": {
  66. "version": "19.2.9",
  67. "resolved": "https://registry.npmmirror.com/@angular/cli/-/cli-19.2.9.tgz",
  68. @@ -818,6 +842,24 @@
  69. "node": "^18.19.1 || ^20.11.1 || >=22.0.0"
  70. }
  71. },
  72. + "node_modules/@angular/material": {
  73. + "version": "19.2.18",
  74. + "resolved": "https://registry.npmmirror.com/@angular/material/-/material-19.2.18.tgz",
  75. + "integrity": "sha512-xxedRQ9u7aiUYVrHAxASLUxnofN29xaqEGhBcHLAfOsFXdDMwDe/2ly79iKufwEs5BFBm3nfhJoarXZ3+8pucQ==",
  76. + "license": "MIT",
  77. + "peer": true,
  78. + "dependencies": {
  79. + "tslib": "^2.3.0"
  80. + },
  81. + "peerDependencies": {
  82. + "@angular/cdk": "19.2.18",
  83. + "@angular/common": "^19.0.0 || ^20.0.0",
  84. + "@angular/core": "^19.0.0 || ^20.0.0",
  85. + "@angular/forms": "^19.0.0 || ^20.0.0",
  86. + "@angular/platform-browser": "^19.0.0 || ^20.0.0",
  87. + "rxjs": "^6.5.3 || ^7.4.0"
  88. + }
  89. + },
  90. "node_modules/@angular/platform-browser": {
  91. "version": "19.2.8",
  92. "resolved": "https://registry.npmmirror.com/@angular/platform-browser/-/platform-browser-19.2.8.tgz",
  93. @@ -876,6 +918,87 @@
  94. "rxjs": "^6.5.3 || ^7.4.0"
  95. }
  96. },
  97. + "node_modules/@ant-design/colors": {
  98. + "version": "7.2.1",
  99. + "resolved": "https://registry.npmmirror.com/@ant-design/colors/-/colors-7.2.1.tgz",
  100. + "integrity": "sha512-lCHDcEzieu4GA3n8ELeZ5VQ8pKQAWcGGLRTQ50aQM2iqPpq2evTxER84jfdPvsPAtEcZ7m44NI45edFMo8oOYQ==",
  101. + "license": "MIT",
  102. + "peer": true,
  103. + "dependencies": {
  104. + "@ant-design/fast-color": "^2.0.6"
  105. + }
  106. + },
  107. + "node_modules/@ant-design/fast-color": {
  108. + "version": "2.0.6",
  109. + "resolved": "https://registry.npmmirror.com/@ant-design/fast-color/-/fast-color-2.0.6.tgz",
  110. + "integrity": "sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA==",
  111. + "license": "MIT",
  112. + "peer": true,
  113. + "dependencies": {
  114. + "@babel/runtime": "^7.24.7"
  115. + },
  116. + "engines": {
  117. + "node": ">=8.x"
  118. + }
  119. + },
  120. + "node_modules/@ant-design/icons-angular": {
  121. + "version": "19.0.0",
  122. + "resolved": "https://registry.npmmirror.com/@ant-design/icons-angular/-/icons-angular-19.0.0.tgz",
  123. + "integrity": "sha512-bBWFA1cTZwLAFTgpozkeNIHX1nXyZuiUaRzTcAfFEt85eW1X3ypMcBfS/XEVVVzkdTw5Td+E1vwzgfuUlKiYSA==",
  124. + "license": "MIT",
  125. + "peer": true,
  126. + "dependencies": {
  127. + "@ant-design/colors": "^7.0.0",
  128. + "tslib": "^2.0.0"
  129. + },
  130. + "peerDependencies": {
  131. + "@angular/common": "^19.0.0",
  132. + "@angular/core": "^19.0.0",
  133. + "@angular/platform-browser": "^19.0.0",
  134. + "rxjs": "^6.5.3 || ^7.4.0"
  135. + }
  136. + },
  137. + "node_modules/@awesome-cordova-plugins/core": {
  138. + "version": "6.16.0",
  139. + "resolved": "https://registry.npmmirror.com/@awesome-cordova-plugins/core/-/core-6.16.0.tgz",
  140. + "integrity": "sha512-ep+nkDY6CyFBfqS/HS03PE+MZWiQoJWb/nLMwfj2ndC14UgZeVO3ecmEFknYjJOBf04emTbs7hbLewFrVkazmg==",
  141. + "license": "MIT",
  142. + "peer": true,
  143. + "dependencies": {
  144. + "@types/cordova": "latest"
  145. + },
  146. + "peerDependencies": {
  147. + "rxjs": "^5.5.0 || ^6.5.0 || ^7.3.0"
  148. + }
  149. + },
  150. + "node_modules/@awesome-cordova-plugins/diagnostic": {
  151. + "version": "6.16.0",
  152. + "resolved": "https://registry.npmmirror.com/@awesome-cordova-plugins/diagnostic/-/diagnostic-6.16.0.tgz",
  153. + "integrity": "sha512-tVlK0xXpDSaC3xq2N1VJEntDMX1r3yNd+RR8LmsAUu1KVoQXpvcRzKlHyOIwNMRz8XH+7a3Lom0wTozoD/Ipeg==",
  154. + "license": "MIT",
  155. + "peer": true,
  156. + "dependencies": {
  157. + "@types/cordova": "latest"
  158. + },
  159. + "peerDependencies": {
  160. + "@awesome-cordova-plugins/core": "^6.0.1",
  161. + "rxjs": "^5.5.0 || ^6.5.0 || ^7.3.0"
  162. + }
  163. + },
  164. + "node_modules/@awesome-cordova-plugins/media-capture": {
  165. + "version": "6.16.0",
  166. + "resolved": "https://registry.npmmirror.com/@awesome-cordova-plugins/media-capture/-/media-capture-6.16.0.tgz",
  167. + "integrity": "sha512-fuIOofoqJ44WzCsJeo7FGrpqDK73WDIPRqLOWwuML7ompqZO0Yv0C3tTYBWxSqH1Vfk+OYfZhqtwOW56u4yWIw==",
  168. + "license": "MIT",
  169. + "peer": true,
  170. + "dependencies": {
  171. + "@types/cordova": "latest"
  172. + },
  173. + "peerDependencies": {
  174. + "@awesome-cordova-plugins/core": "^6.0.1",
  175. + "rxjs": "^5.5.0 || ^6.5.0 || ^7.3.0"
  176. + }
  177. + },
  178. "node_modules/@babel/code-frame": {
  179. "version": "7.26.2",
  180. "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.26.2.tgz",
  181. @@ -2417,7 +2540,6 @@
  182. "version": "7.26.10",
  183. "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.26.10.tgz",
  184. "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==",
  185. - "dev": true,
  186. "license": "MIT",
  187. "dependencies": {
  188. "regenerator-runtime": "^0.14.0"
  189. @@ -2426,6 +2548,33 @@
  190. "node": ">=6.9.0"
  191. }
  192. },
  193. + "node_modules/@babel/runtime-corejs2": {
  194. + "version": "7.27.4",
  195. + "resolved": "https://registry.npmmirror.com/@babel/runtime-corejs2/-/runtime-corejs2-7.27.4.tgz",
  196. + "integrity": "sha512-EVEiTwEdxk2fxCBfhZubE75AjmKshdbmBTcbPwyTa4Gc6NbJhePVr4bC5iosW5WnNQ0SJAeD31QaCG+n5Q6s3w==",
  197. + "license": "MIT",
  198. + "peer": true,
  199. + "dependencies": {
  200. + "core-js": "^2.6.12"
  201. + },
  202. + "engines": {
  203. + "node": ">=6.9.0"
  204. + }
  205. + },
  206. + "node_modules/@babel/runtime-corejs3": {
  207. + "version": "7.24.7",
  208. + "resolved": "https://registry.npmmirror.com/@babel/runtime-corejs3/-/runtime-corejs3-7.24.7.tgz",
  209. + "integrity": "sha512-eytSX6JLBY6PVAeQa2bFlDx/7Mmln/gaEpsit5a3WEvjGfiIytEsgAwuIXCPM0xvw0v0cJn3ilq0/TvXrW0kgA==",
  210. + "license": "MIT",
  211. + "peer": true,
  212. + "dependencies": {
  213. + "core-js-pure": "^3.30.2",
  214. + "regenerator-runtime": "^0.14.0"
  215. + },
  216. + "engines": {
  217. + "node": ">=6.9.0"
  218. + }
  219. + },
  220. "node_modules/@babel/template": {
  221. "version": "7.27.0",
  222. "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.27.0.tgz",
  223. @@ -2491,6 +2640,24 @@
  224. "node": ">=6.9.0"
  225. }
  226. },
  227. + "node_modules/@babylonjs/core": {
  228. + "version": "7.2.3",
  229. + "resolved": "https://registry.npmmirror.com/@babylonjs/core/-/core-7.2.3.tgz",
  230. + "integrity": "sha512-SzNVgkSJi4hErSL3+VmAJIoUrN4pc2BNVHU3DZqR7ZxzwmhhaF+c5tO9CQIi4loS3PdvjEdSUY5K5dnPhxQXfQ==",
  231. + "license": "Apache-2.0",
  232. + "peer": true
  233. + },
  234. + "node_modules/@babylonjs/loaders": {
  235. + "version": "7.2.3",
  236. + "resolved": "https://registry.npmmirror.com/@babylonjs/loaders/-/loaders-7.2.3.tgz",
  237. + "integrity": "sha512-K5FNhcimQzwstgUHSH5da6VVSeyeEDbIgRrlEW7faqXyEbELECxwo+Y5wPvLTAtwyG5VMgqx8eDwJCH9mPogNQ==",
  238. + "license": "Apache-2.0",
  239. + "peer": true,
  240. + "peerDependencies": {
  241. + "@babylonjs/core": "^7.0.0",
  242. + "babylonjs-gltf2interface": "^7.0.0"
  243. + }
  244. + },
  245. "node_modules/@capacitor/app": {
  246. "version": "7.0.1",
  247. "resolved": "https://registry.npmmirror.com/@capacitor/app/-/app-7.0.1.tgz",
  248. @@ -2500,6 +2667,16 @@
  249. "@capacitor/core": ">=7.0.0"
  250. }
  251. },
  252. + "node_modules/@capacitor/camera": {
  253. + "version": "7.0.1",
  254. + "resolved": "https://registry.npmmirror.com/@capacitor/camera/-/camera-7.0.1.tgz",
  255. + "integrity": "sha512-gDUFsYlhMra5VVOa4iJV6+MQRhp3VXpTLQY4JDATj7UvoZ8Hv4DG8qplPL9ufUFNoR3QbDDnf8+gbQOsKdkDjg==",
  256. + "license": "MIT",
  257. + "peer": true,
  258. + "peerDependencies": {
  259. + "@capacitor/core": ">=7.0.0"
  260. + }
  261. + },
  262. "node_modules/@capacitor/cli": {
  263. "version": "7.2.0",
  264. "resolved": "https://registry.npmmirror.com/@capacitor/cli/-/cli-7.2.0.tgz",
  265. @@ -2741,6 +2918,16 @@
  266. "node": ">= 10.0.0"
  267. }
  268. },
  269. + "node_modules/@capacitor/clipboard": {
  270. + "version": "7.0.1",
  271. + "resolved": "https://registry.npmmirror.com/@capacitor/clipboard/-/clipboard-7.0.1.tgz",
  272. + "integrity": "sha512-n4XEHma7apLOYvyeaR9S5u3uGzDYG7WeQxmtZlwP01HneIzMnusVgw4Im6I+pMBcoUN9TfVdf6eqKph97B1bAw==",
  273. + "license": "MIT",
  274. + "peer": true,
  275. + "peerDependencies": {
  276. + "@capacitor/core": ">=7.0.0"
  277. + }
  278. + },
  279. "node_modules/@capacitor/core": {
  280. "version": "7.2.0",
  281. "resolved": "https://registry.npmmirror.com/@capacitor/core/-/core-7.2.0.tgz",
  282. @@ -2750,6 +2937,19 @@
  283. "tslib": "^2.1.0"
  284. }
  285. },
  286. + "node_modules/@capacitor/filesystem": {
  287. + "version": "7.1.1",
  288. + "resolved": "https://registry.npmmirror.com/@capacitor/filesystem/-/filesystem-7.1.1.tgz",
  289. + "integrity": "sha512-xAQvurZlfKOO7I8d98GFRymS/Dd25sw0L1weF4dKR59nXloWEeagoFv+xtaNlDfolJHo4/uKVvxsLzM0xSmiUQ==",
  290. + "license": "MIT",
  291. + "peer": true,
  292. + "dependencies": {
  293. + "@capacitor/synapse": "^1.0.1"
  294. + },
  295. + "peerDependencies": {
  296. + "@capacitor/core": ">=7.0.0"
  297. + }
  298. + },
  299. "node_modules/@capacitor/haptics": {
  300. "version": "7.0.1",
  301. "resolved": "https://registry.npmmirror.com/@capacitor/haptics/-/haptics-7.0.1.tgz",
  302. @@ -2777,6 +2977,20 @@
  303. "@capacitor/core": ">=7.0.0"
  304. }
  305. },
  306. + "node_modules/@capacitor/synapse": {
  307. + "version": "1.0.2",
  308. + "resolved": "https://registry.npmmirror.com/@capacitor/synapse/-/synapse-1.0.2.tgz",
  309. + "integrity": "sha512-ynq39s4D2rhk+aVLWKfKfMCz9SHPKijL9tq8aFL5dG7ik7/+PvBHmg9cPHbqdvFEUSMmaGzL6cIjzkOruW7vGA==",
  310. + "license": "ISC",
  311. + "peer": true
  312. + },
  313. + "node_modules/@cfworker/json-schema": {
  314. + "version": "4.1.1",
  315. + "resolved": "https://registry.npmmirror.com/@cfworker/json-schema/-/json-schema-4.1.1.tgz",
  316. + "integrity": "sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==",
  317. + "license": "MIT",
  318. + "peer": true
  319. + },
  320. "node_modules/@colors/colors": {
  321. "version": "1.5.0",
  322. "resolved": "https://registry.npmmirror.com/@colors/colors/-/colors-1.5.0.tgz",
  323. @@ -2787,6 +3001,16 @@
  324. "node": ">=0.1.90"
  325. }
  326. },
  327. + "node_modules/@ctrl/tinycolor": {
  328. + "version": "3.6.1",
  329. + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
  330. + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
  331. + "license": "MIT",
  332. + "peer": true,
  333. + "engines": {
  334. + "node": ">=10"
  335. + }
  336. + },
  337. "node_modules/@discoveryjs/json-ext": {
  338. "version": "0.6.3",
  339. "resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz",
  340. @@ -4377,6 +4601,112 @@
  341. "tslib": "2"
  342. }
  343. },
  344. + "node_modules/@langchain/core": {
  345. + "version": "0.3.57",
  346. + "resolved": "https://registry.npmmirror.com/@langchain/core/-/core-0.3.57.tgz",
  347. + "integrity": "sha512-jz28qCTKJmi47b6jqhQ6vYRTG5jRpqhtPQjriRTB5wR8mgvzo6xKs0fG/kExS3ZvM79ytD1npBvgf8i19xOo9Q==",
  348. + "license": "MIT",
  349. + "peer": true,
  350. + "dependencies": {
  351. + "@cfworker/json-schema": "^4.0.2",
  352. + "ansi-styles": "^5.0.0",
  353. + "camelcase": "6",
  354. + "decamelize": "1.2.0",
  355. + "js-tiktoken": "^1.0.12",
  356. + "langsmith": "^0.3.29",
  357. + "mustache": "^4.2.0",
  358. + "p-queue": "^6.6.2",
  359. + "p-retry": "4",
  360. + "uuid": "^10.0.0",
  361. + "zod": "^3.22.4",
  362. + "zod-to-json-schema": "^3.22.3"
  363. + },
  364. + "engines": {
  365. + "node": ">=18"
  366. + }
  367. + },
  368. + "node_modules/@langchain/core/node_modules/@types/retry": {
  369. + "version": "0.12.0",
  370. + "resolved": "https://registry.npmmirror.com/@types/retry/-/retry-0.12.0.tgz",
  371. + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==",
  372. + "license": "MIT",
  373. + "peer": true
  374. + },
  375. + "node_modules/@langchain/core/node_modules/ansi-styles": {
  376. + "version": "5.2.0",
  377. + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-5.2.0.tgz",
  378. + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
  379. + "license": "MIT",
  380. + "peer": true,
  381. + "engines": {
  382. + "node": ">=10"
  383. + },
  384. + "funding": {
  385. + "url": "https://github.com/chalk/ansi-styles?sponsor=1"
  386. + }
  387. + },
  388. + "node_modules/@langchain/core/node_modules/langsmith": {
  389. + "version": "0.3.30",
  390. + "resolved": "https://registry.npmmirror.com/langsmith/-/langsmith-0.3.30.tgz",
  391. + "integrity": "sha512-ZaiaOx9MysuSQlAkRw8mjm7iqhrlF7HI0LCTLxiNBEWBPywdkgI7UnN+s7KtlRiM0tP1cOLm+dQY++Fi33jkPQ==",
  392. + "license": "MIT",
  393. + "peer": true,
  394. + "dependencies": {
  395. + "@types/uuid": "^10.0.0",
  396. + "chalk": "^4.1.2",
  397. + "console-table-printer": "^2.12.1",
  398. + "p-queue": "^6.6.2",
  399. + "p-retry": "4",
  400. + "semver": "^7.6.3",
  401. + "uuid": "^10.0.0"
  402. + },
  403. + "peerDependencies": {
  404. + "openai": "*"
  405. + },
  406. + "peerDependenciesMeta": {
  407. + "openai": {
  408. + "optional": true
  409. + }
  410. + }
  411. + },
  412. + "node_modules/@langchain/core/node_modules/p-retry": {
  413. + "version": "4.6.2",
  414. + "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-4.6.2.tgz",
  415. + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==",
  416. + "license": "MIT",
  417. + "peer": true,
  418. + "dependencies": {
  419. + "@types/retry": "0.12.0",
  420. + "retry": "^0.13.1"
  421. + },
  422. + "engines": {
  423. + "node": ">=8"
  424. + }
  425. + },
  426. + "node_modules/@langchain/core/node_modules/retry": {
  427. + "version": "0.13.1",
  428. + "resolved": "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz",
  429. + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
  430. + "license": "MIT",
  431. + "peer": true,
  432. + "engines": {
  433. + "node": ">= 4"
  434. + }
  435. + },
  436. + "node_modules/@langchain/core/node_modules/uuid": {
  437. + "version": "10.0.0",
  438. + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-10.0.0.tgz",
  439. + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==",
  440. + "funding": [
  441. + "https://github.com/sponsors/broofa",
  442. + "https://github.com/sponsors/ctavan"
  443. + ],
  444. + "license": "MIT",
  445. + "peer": true,
  446. + "bin": {
  447. + "uuid": "dist/bin/uuid"
  448. + }
  449. + },
  450. "node_modules/@leichtgewicht/ip-codec": {
  451. "version": "2.0.5",
  452. "resolved": "https://registry.npmmirror.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz",
  453. @@ -6041,6 +6371,13 @@
  454. "@types/node": "*"
  455. }
  456. },
  457. + "node_modules/@types/cordova": {
  458. + "version": "11.0.3",
  459. + "resolved": "https://registry.npmmirror.com/@types/cordova/-/cordova-11.0.3.tgz",
  460. + "integrity": "sha512-kyuRQ40/NWQVhqGIHq78Ehu2Bf9Mlg0LhmSmis6ZFJK7z933FRfYi8tHe/k/0fB+PGfCf95rJC6TO7dopaFvAg==",
  461. + "license": "MIT",
  462. + "peer": true
  463. + },
  464. "node_modules/@types/cors": {
  465. "version": "2.8.17",
  466. "resolved": "https://registry.npmmirror.com/@types/cors/-/cors-2.8.17.tgz",
  467. @@ -6178,7 +6515,6 @@
  468. "version": "22.14.1",
  469. "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.14.1.tgz",
  470. "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==",
  471. - "dev": true,
  472. "license": "MIT",
  473. "dependencies": {
  474. "undici-types": "~6.21.0"
  475. @@ -6194,6 +6530,16 @@
  476. "@types/node": "*"
  477. }
  478. },
  479. + "node_modules/@types/parse": {
  480. + "version": "3.0.9",
  481. + "resolved": "https://registry.npmmirror.com/@types/parse/-/parse-3.0.9.tgz",
  482. + "integrity": "sha512-DGTHygc7krgmNAK8h42giwmAofCd9uv2++RD+zw6OmWI7AEnlTYZwEuWsx22SA2CSMQrZW8P2INHLpQbnQFUng==",
  483. + "license": "MIT",
  484. + "peer": true,
  485. + "dependencies": {
  486. + "@types/node": "*"
  487. + }
  488. + },
  489. "node_modules/@types/qs": {
  490. "version": "6.9.18",
  491. "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.18.tgz",
  492. @@ -6265,6 +6611,27 @@
  493. "@types/node": "*"
  494. }
  495. },
  496. + "node_modules/@types/spark-md5": {
  497. + "version": "3.0.5",
  498. + "resolved": "https://registry.npmmirror.com/@types/spark-md5/-/spark-md5-3.0.5.tgz",
  499. + "integrity": "sha512-lWf05dnD42DLVKQJZrDHtWFidcLrHuip01CtnC2/S6AMhX4t9ZlEUj4iuRlAnts0PQk7KESOqKxeGE/b6sIPGg==",
  500. + "license": "MIT",
  501. + "peer": true
  502. + },
  503. + "node_modules/@types/uuid": {
  504. + "version": "10.0.0",
  505. + "resolved": "https://registry.npmmirror.com/@types/uuid/-/uuid-10.0.0.tgz",
  506. + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==",
  507. + "license": "MIT",
  508. + "peer": true
  509. + },
  510. + "node_modules/@types/webrtc": {
  511. + "version": "0.0.37",
  512. + "resolved": "https://registry.npmmirror.com/@types/webrtc/-/webrtc-0.0.37.tgz",
  513. + "integrity": "sha512-JGAJC/ZZDhcrrmepU4sPLQLIOIAgs5oIK+Ieq90K8fdaNMhfdfqmYatJdgif1NDQtvrSlTOGJDUYHIDunuufOg==",
  514. + "license": "MIT",
  515. + "peer": true
  516. + },
  517. "node_modules/@types/ws": {
  518. "version": "8.18.1",
  519. "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.18.1.tgz",
  520. @@ -6652,6 +7019,13 @@
  521. "@xtuc/long": "4.2.2"
  522. }
  523. },
  524. + "node_modules/@wecom/jssdk": {
  525. + "version": "2.3.1",
  526. + "resolved": "https://registry.npmmirror.com/@wecom/jssdk/-/jssdk-2.3.1.tgz",
  527. + "integrity": "sha512-9XxeY/kljYZF1tKk9v0ZOR/Amz2Y8cxrmZTEBTN/Zqb6WsbpHiDPOWbvpvUBrTsiCW4w7nDnvYYi01ZsOUcUYQ==",
  528. + "license": "MIT",
  529. + "peer": true
  530. + },
  531. "node_modules/@xmldom/xmldom": {
  532. "version": "0.8.10",
  533. "resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
  534. @@ -6883,7 +7257,6 @@
  535. "version": "4.3.0",
  536. "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
  537. "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
  538. - "dev": true,
  539. "license": "MIT",
  540. "dependencies": {
  541. "color-convert": "^2.0.1"
  542. @@ -6936,7 +7309,6 @@
  543. "version": "2.0.1",
  544. "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz",
  545. "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
  546. - "dev": true,
  547. "license": "Python-2.0"
  548. },
  549. "node_modules/aria-query": {
  550. @@ -7160,6 +7532,16 @@
  551. "url": "https://github.com/sponsors/ljharb"
  552. }
  553. },
  554. + "node_modules/axios": {
  555. + "version": "0.26.1",
  556. + "resolved": "https://registry.npmmirror.com/axios/-/axios-0.26.1.tgz",
  557. + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==",
  558. + "license": "MIT",
  559. + "peer": true,
  560. + "dependencies": {
  561. + "follow-redirects": "^1.14.8"
  562. + }
  563. + },
  564. "node_modules/axobject-query": {
  565. "version": "4.1.0",
  566. "resolved": "https://registry.npmmirror.com/axobject-query/-/axobject-query-4.1.0.tgz",
  567. @@ -7240,6 +7622,13 @@
  568. "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
  569. }
  570. },
  571. + "node_modules/babylonjs-gltf2interface": {
  572. + "version": "7.54.3",
  573. + "resolved": "https://registry.npmmirror.com/babylonjs-gltf2interface/-/babylonjs-gltf2interface-7.54.3.tgz",
  574. + "integrity": "sha512-ZAWYFyE+SOczfWT19O4e3YRkCZ5i57SiD2eK2kqc+Tow/t9X1S45xgSFNuHZff++dd5BlVIEQDSnFV+McFLSnQ==",
  575. + "license": "Apache-2.0",
  576. + "peer": true
  577. + },
  578. "node_modules/balanced-match": {
  579. "version": "1.0.2",
  580. "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
  581. @@ -7251,7 +7640,6 @@
  582. "version": "1.5.1",
  583. "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
  584. "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
  585. - "dev": true,
  586. "funding": [
  587. {
  588. "type": "github",
  589. @@ -7305,6 +7693,18 @@
  590. "node": ">=14.0.0"
  591. }
  592. },
  593. + "node_modules/bent": {
  594. + "version": "7.3.12",
  595. + "resolved": "https://registry.npmmirror.com/bent/-/bent-7.3.12.tgz",
  596. + "integrity": "sha512-T3yrKnVGB63zRuoco/7Ybl7BwwGZR0lceoVG5XmQyMIH9s19SV5m+a8qam4if0zQuAmOQTyPTPmsQBdAorGK3w==",
  597. + "license": "Apache-2.0",
  598. + "peer": true,
  599. + "dependencies": {
  600. + "bytesish": "^0.4.1",
  601. + "caseless": "~0.12.0",
  602. + "is-stream": "^2.0.0"
  603. + }
  604. + },
  605. "node_modules/big-integer": {
  606. "version": "1.6.52",
  607. "resolved": "https://registry.npmmirror.com/big-integer/-/big-integer-1.6.52.tgz",
  608. @@ -7350,6 +7750,13 @@
  609. "readable-stream": "^3.4.0"
  610. }
  611. },
  612. + "node_modules/blueimp-md5": {
  613. + "version": "2.19.0",
  614. + "resolved": "https://registry.npmmirror.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz",
  615. + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==",
  616. + "license": "MIT",
  617. + "peer": true
  618. + },
  619. "node_modules/body-parser": {
  620. "version": "1.20.3",
  621. "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.3.tgz",
  622. @@ -7547,6 +7954,13 @@
  623. "node": ">= 0.8"
  624. }
  625. },
  626. + "node_modules/bytesish": {
  627. + "version": "0.4.4",
  628. + "resolved": "https://registry.npmmirror.com/bytesish/-/bytesish-0.4.4.tgz",
  629. + "integrity": "sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ==",
  630. + "license": "(Apache-2.0 AND MIT)",
  631. + "peer": true
  632. + },
  633. "node_modules/cacache": {
  634. "version": "19.0.1",
  635. "resolved": "https://registry.npmmirror.com/cacache/-/cacache-19.0.1.tgz",
  636. @@ -7713,6 +8127,19 @@
  637. "node": ">=6"
  638. }
  639. },
  640. + "node_modules/camelcase": {
  641. + "version": "6.3.0",
  642. + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz",
  643. + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
  644. + "license": "MIT",
  645. + "peer": true,
  646. + "engines": {
  647. + "node": ">=10"
  648. + },
  649. + "funding": {
  650. + "url": "https://github.com/sponsors/sindresorhus"
  651. + }
  652. + },
  653. "node_modules/caniuse-lite": {
  654. "version": "1.0.30001715",
  655. "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001715.tgz",
  656. @@ -7734,11 +8161,17 @@
  657. ],
  658. "license": "CC-BY-4.0"
  659. },
  660. + "node_modules/caseless": {
  661. + "version": "0.12.0",
  662. + "resolved": "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz",
  663. + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
  664. + "license": "Apache-2.0",
  665. + "peer": true
  666. + },
  667. "node_modules/chalk": {
  668. "version": "4.1.2",
  669. "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
  670. "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
  671. - "dev": true,
  672. "license": "MIT",
  673. "dependencies": {
  674. "ansi-styles": "^4.1.0",
  675. @@ -7980,7 +8413,6 @@
  676. "version": "2.0.1",
  677. "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
  678. "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
  679. - "dev": true,
  680. "license": "MIT",
  681. "dependencies": {
  682. "color-name": "~1.1.4"
  683. @@ -7993,7 +8425,6 @@
  684. "version": "1.1.4",
  685. "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
  686. "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
  687. - "dev": true,
  688. "license": "MIT"
  689. },
  690. "node_modules/colorette": {
  691. @@ -8146,6 +8577,16 @@
  692. "dev": true,
  693. "license": "MIT"
  694. },
  695. + "node_modules/console-table-printer": {
  696. + "version": "2.14.1",
  697. + "resolved": "https://registry.npmmirror.com/console-table-printer/-/console-table-printer-2.14.1.tgz",
  698. + "integrity": "sha512-Nvz+lt5BRvG8qJ8KrqhK0rtbE4hbi0oj4G5/2ig7pbMXBCvy+zcHEZbyIdidl2GEL0AwtxYX4Zc3C28fFSPXyA==",
  699. + "license": "MIT",
  700. + "peer": true,
  701. + "dependencies": {
  702. + "simple-wcswidth": "^1.0.1"
  703. + }
  704. + },
  705. "node_modules/content-disposition": {
  706. "version": "0.5.4",
  707. "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz",
  708. @@ -8231,6 +8672,15 @@
  709. "webpack": "^5.1.0"
  710. }
  711. },
  712. + "node_modules/core-js": {
  713. + "version": "2.6.12",
  714. + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
  715. + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
  716. + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
  717. + "hasInstallScript": true,
  718. + "license": "MIT",
  719. + "peer": true
  720. + },
  721. "node_modules/core-js-compat": {
  722. "version": "3.41.0",
  723. "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.41.0.tgz",
  724. @@ -8245,6 +8695,18 @@
  725. "url": "https://opencollective.com/core-js"
  726. }
  727. },
  728. + "node_modules/core-js-pure": {
  729. + "version": "3.42.0",
  730. + "resolved": "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.42.0.tgz",
  731. + "integrity": "sha512-007bM04u91fF4kMgwom2I5cQxAFIy8jVulgr9eozILl/SZE53QOqnW/+vviC+wQWLv+AunBG+8Q0TLoeSsSxRQ==",
  732. + "hasInstallScript": true,
  733. + "license": "MIT",
  734. + "peer": true,
  735. + "funding": {
  736. + "type": "opencollective",
  737. + "url": "https://opencollective.com/core-js"
  738. + }
  739. + },
  740. "node_modules/core-util-is": {
  741. "version": "1.0.3",
  742. "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz",
  743. @@ -8308,6 +8770,13 @@
  744. "node": ">= 8"
  745. }
  746. },
  747. + "node_modules/crypto-js": {
  748. + "version": "4.2.0",
  749. + "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
  750. + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==",
  751. + "license": "MIT",
  752. + "peer": true
  753. + },
  754. "node_modules/css-loader": {
  755. "version": "7.1.2",
  756. "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-7.1.2.tgz",
  757. @@ -8448,6 +8917,23 @@
  758. "url": "https://github.com/sponsors/ljharb"
  759. }
  760. },
  761. + "node_modules/date-fns": {
  762. + "version": "2.30.0",
  763. + "resolved": "https://registry.npmmirror.com/date-fns/-/date-fns-2.30.0.tgz",
  764. + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
  765. + "license": "MIT",
  766. + "peer": true,
  767. + "dependencies": {
  768. + "@babel/runtime": "^7.21.0"
  769. + },
  770. + "engines": {
  771. + "node": ">=0.11"
  772. + },
  773. + "funding": {
  774. + "type": "opencollective",
  775. + "url": "https://opencollective.com/date-fns"
  776. + }
  777. + },
  778. "node_modules/date-format": {
  779. "version": "4.0.14",
  780. "resolved": "https://registry.npmmirror.com/date-format/-/date-format-4.0.14.tgz",
  781. @@ -8462,7 +8948,6 @@
  782. "version": "4.4.0",
  783. "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz",
  784. "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
  785. - "dev": true,
  786. "license": "MIT",
  787. "dependencies": {
  788. "ms": "^2.1.3"
  789. @@ -8476,6 +8961,16 @@
  790. }
  791. }
  792. },
  793. + "node_modules/decamelize": {
  794. + "version": "1.2.0",
  795. + "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
  796. + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
  797. + "license": "MIT",
  798. + "peer": true,
  799. + "engines": {
  800. + "node": ">=0.10.0"
  801. + }
  802. + },
  803. "node_modules/deep-is": {
  804. "version": "0.1.4",
  805. "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
  806. @@ -8621,6 +9116,13 @@
  807. "dev": true,
  808. "license": "MIT"
  809. },
  810. + "node_modules/dijkstrajs": {
  811. + "version": "1.0.3",
  812. + "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
  813. + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==",
  814. + "license": "MIT",
  815. + "peer": true
  816. + },
  817. "node_modules/dns-packet": {
  818. "version": "5.6.1",
  819. "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-5.6.1.tgz",
  820. @@ -8910,7 +9412,6 @@
  821. "version": "4.5.0",
  822. "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
  823. "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
  824. - "dev": true,
  825. "license": "BSD-2-Clause",
  826. "engines": {
  827. "node": ">=0.12"
  828. @@ -9210,6 +9711,24 @@
  829. "url": "https://github.com/sponsors/sindresorhus"
  830. }
  831. },
  832. + "node_modules/esdk-obs-browserjs": {
  833. + "version": "3.25.51",
  834. + "resolved": "https://registry.npmmirror.com/esdk-obs-browserjs/-/esdk-obs-browserjs-3.25.51.tgz",
  835. + "integrity": "sha512-bH0esfRpOMGDrWatpi74Q5IIh9dm/40fvoocqf8XaAiPqfyi9PzUtRCxrlpzVEu6COhJyNIJUUHBrA9Yt3ZpEg==",
  836. + "license": "Apache-2.0",
  837. + "peer": true,
  838. + "dependencies": {
  839. + "axios": "^0.26.1",
  840. + "blueimp-md5": "^2.18.0",
  841. + "crypto-js": "^4.2.0",
  842. + "js-base64": "^3.7.1",
  843. + "jssha": "^3.2.0",
  844. + "urijs": "^1.19.7"
  845. + },
  846. + "engines": {
  847. + "node": ">=0.12.7"
  848. + }
  849. + },
  850. "node_modules/eslint": {
  851. "version": "9.25.1",
  852. "resolved": "https://registry.npmmirror.com/eslint/-/eslint-9.25.1.tgz",
  853. @@ -9536,6 +10055,16 @@
  854. "node": "*"
  855. }
  856. },
  857. + "node_modules/esm": {
  858. + "version": "3.2.25",
  859. + "resolved": "https://registry.npmmirror.com/esm/-/esm-3.2.25.tgz",
  860. + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
  861. + "license": "MIT",
  862. + "peer": true,
  863. + "engines": {
  864. + "node": ">=6"
  865. + }
  866. + },
  867. "node_modules/espree": {
  868. "version": "10.3.0",
  869. "resolved": "https://registry.npmmirror.com/espree/-/espree-10.3.0.tgz",
  870. @@ -9627,7 +10156,6 @@
  871. "version": "4.0.7",
  872. "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
  873. "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
  874. - "dev": true,
  875. "license": "MIT"
  876. },
  877. "node_modules/events": {
  878. @@ -10038,11 +10566,62 @@
  879. "dev": true,
  880. "license": "ISC"
  881. },
  882. + "node_modules/fmode-ng": {
  883. + "version": "0.0.83",
  884. + "resolved": "https://registry.npmmirror.com/fmode-ng/-/fmode-ng-0.0.83.tgz",
  885. + "integrity": "sha512-hFQ+5FNINOWsw+kSiQ7jKxe6lgm6H8/XffmSJb5NHXz/3Cphp6fjMwi7niDACXeunwWOvFwx6xsCcZl64NvFPw==",
  886. + "license": "COPYRIGHT © 未来飞马 未来全栈 www.fmode.cn All RIGHTS RESERVED",
  887. + "dependencies": {
  888. + "tslib": "^2.3.0"
  889. + },
  890. + "peerDependencies": {
  891. + "@amap/amap-jsapi-loader": "^1.0.1",
  892. + "@angular/animations": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
  893. + "@angular/common": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
  894. + "@angular/core": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
  895. + "@angular/forms": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
  896. + "@angular/material": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
  897. + "@awesome-cordova-plugins/diagnostic": "^5.0.0 || ^6.0.0",
  898. + "@awesome-cordova-plugins/media-capture": "^5.0.0 || ^6.0.0 || ^7.0.0",
  899. + "@babylonjs/core": "7.2.3",
  900. + "@babylonjs/loaders": "7.2.3",
  901. + "@capacitor/camera": "^5.0.0 || ^6.0.0 || ^7.0.0",
  902. + "@capacitor/clipboard": "^5.0.0 || ^6.0.0 || ^7.0.0",
  903. + "@capacitor/filesystem": "^5.0.0 || ^6.0.0 || ^7.0.0",
  904. + "@ionic/angular": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
  905. + "@langchain/core": "^0.3.0 || ^1.0.0",
  906. + "@types/parse": "^3.0.9",
  907. + "@types/spark-md5": "^3.0.4",
  908. + "@wecom/jssdk": "^2.2.4",
  909. + "esdk-obs-browserjs": "^3.23.5",
  910. + "highlight.js": "^11.0.0",
  911. + "jquery": "^3.7.1",
  912. + "markdown-it": "^13.0.0 || ^14.0.0",
  913. + "markdown-it-abbr": "^1.0.4",
  914. + "markdown-it-deflist": "^2.1.0",
  915. + "markdown-it-footnote": "^3.0.3",
  916. + "markdown-it-imsize": "^2.0.1",
  917. + "markdown-it-ins": "^3.0.1",
  918. + "markdown-it-mark": "^3.0.1",
  919. + "markdown-it-mathjax": "^2.0.0",
  920. + "markdown-it-ruby": "^0.1.1",
  921. + "markdown-it-sub": "^1.0.0",
  922. + "markdown-it-sup": "^1.0.0",
  923. + "mathjax-full": "3.2.2",
  924. + "microsoft-cognitiveservices-speech-sdk": "^1.0.0 || ^2.0.0",
  925. + "ng-qrcode": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
  926. + "ng-zorro-antd": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
  927. + "parse": "^5.0.0",
  928. + "plantuml-encoder": "^1.4.0",
  929. + "qiniu-js": "^3.0.0 || ^2.0.0",
  930. + "recorder-core": "^1.2.23070100",
  931. + "spark-md5": "^3.0.2"
  932. + }
  933. + },
  934. "node_modules/follow-redirects": {
  935. "version": "1.15.9",
  936. "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz",
  937. "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
  938. - "dev": true,
  939. "funding": [
  940. {
  941. "type": "individual",
  942. @@ -10231,7 +10810,6 @@
  943. "version": "2.0.5",
  944. "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
  945. "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
  946. - "dev": true,
  947. "license": "ISC",
  948. "engines": {
  949. "node": "6.* || 8.* || >= 10.*"
  950. @@ -10472,7 +11050,6 @@
  951. "version": "4.0.0",
  952. "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
  953. "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
  954. - "dev": true,
  955. "license": "MIT",
  956. "engines": {
  957. "node": ">=8"
  958. @@ -10549,6 +11126,16 @@
  959. "node": ">= 0.4"
  960. }
  961. },
  962. + "node_modules/highlight.js": {
  963. + "version": "11.11.1",
  964. + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.11.1.tgz",
  965. + "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==",
  966. + "license": "BSD-3-Clause",
  967. + "peer": true,
  968. + "engines": {
  969. + "node": ">=12.0.0"
  970. + }
  971. + },
  972. "node_modules/hosted-git-info": {
  973. "version": "8.1.0",
  974. "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-8.1.0.tgz",
  975. @@ -10807,6 +11394,13 @@
  976. "postcss": "^8.1.0"
  977. }
  978. },
  979. + "node_modules/idb-keyval": {
  980. + "version": "6.2.1",
  981. + "resolved": "https://registry.npmmirror.com/idb-keyval/-/idb-keyval-6.2.1.tgz",
  982. + "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==",
  983. + "license": "Apache-2.0",
  984. + "peer": true
  985. + },
  986. "node_modules/ieee754": {
  987. "version": "1.2.1",
  988. "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
  989. @@ -11371,6 +11965,19 @@
  990. "url": "https://github.com/sponsors/ljharb"
  991. }
  992. },
  993. + "node_modules/is-stream": {
  994. + "version": "2.0.1",
  995. + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
  996. + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
  997. + "license": "MIT",
  998. + "peer": true,
  999. + "engines": {
  1000. + "node": ">=8"
  1001. + },
  1002. + "funding": {
  1003. + "url": "https://github.com/sponsors/sindresorhus"
  1004. + }
  1005. + },
  1006. "node_modules/is-string": {
  1007. "version": "1.1.1",
  1008. "resolved": "https://registry.npmmirror.com/is-string/-/is-string-1.1.1.tgz",
  1009. @@ -11696,6 +12303,30 @@
  1010. "jiti": "bin/jiti.js"
  1011. }
  1012. },
  1013. + "node_modules/jquery": {
  1014. + "version": "3.7.1",
  1015. + "resolved": "https://registry.npmmirror.com/jquery/-/jquery-3.7.1.tgz",
  1016. + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==",
  1017. + "license": "MIT",
  1018. + "peer": true
  1019. + },
  1020. + "node_modules/js-base64": {
  1021. + "version": "3.7.7",
  1022. + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.7.tgz",
  1023. + "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==",
  1024. + "license": "BSD-3-Clause",
  1025. + "peer": true
  1026. + },
  1027. + "node_modules/js-tiktoken": {
  1028. + "version": "1.0.20",
  1029. + "resolved": "https://registry.npmmirror.com/js-tiktoken/-/js-tiktoken-1.0.20.tgz",
  1030. + "integrity": "sha512-Xlaqhhs8VfCd6Sh7a1cFkZHQbYTLCwVJJWiHVxBYzLPxW0XsoxBy1hitmjkdIjD3Aon5BXLHFwU5O8WUx6HH+A==",
  1031. + "license": "MIT",
  1032. + "peer": true,
  1033. + "dependencies": {
  1034. + "base64-js": "^1.5.1"
  1035. + }
  1036. + },
  1037. "node_modules/js-tokens": {
  1038. "version": "4.0.0",
  1039. "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
  1040. @@ -11816,6 +12447,16 @@
  1041. ],
  1042. "license": "MIT"
  1043. },
  1044. + "node_modules/jssha": {
  1045. + "version": "3.3.1",
  1046. + "resolved": "https://registry.npmmirror.com/jssha/-/jssha-3.3.1.tgz",
  1047. + "integrity": "sha512-VCMZj12FCFMQYcFLPRm/0lOBbLi8uM2BhXPTqw3U4YAfs4AZfiApOoBLoN8cQE60Z50m1MYMTQVCfgF/KaCVhQ==",
  1048. + "license": "BSD-3-Clause",
  1049. + "peer": true,
  1050. + "engines": {
  1051. + "node": "*"
  1052. + }
  1053. + },
  1054. "node_modules/karma": {
  1055. "version": "6.4.4",
  1056. "resolved": "https://registry.npmmirror.com/karma/-/karma-6.4.4.tgz",
  1057. @@ -12399,6 +13040,16 @@
  1058. "dev": true,
  1059. "license": "MIT"
  1060. },
  1061. + "node_modules/linkify-it": {
  1062. + "version": "5.0.0",
  1063. + "resolved": "https://registry.npmmirror.com/linkify-it/-/linkify-it-5.0.0.tgz",
  1064. + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
  1065. + "license": "MIT",
  1066. + "peer": true,
  1067. + "dependencies": {
  1068. + "uc.micro": "^2.0.0"
  1069. + }
  1070. + },
  1071. "node_modules/listr2": {
  1072. "version": "8.2.5",
  1073. "resolved": "https://registry.npmmirror.com/listr2/-/listr2-8.2.5.tgz",
  1074. @@ -12732,6 +13383,94 @@
  1075. "node": "^18.17.0 || >=20.5.0"
  1076. }
  1077. },
  1078. + "node_modules/markdown-it": {
  1079. + "version": "14.1.0",
  1080. + "resolved": "https://registry.npmmirror.com/markdown-it/-/markdown-it-14.1.0.tgz",
  1081. + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
  1082. + "license": "MIT",
  1083. + "peer": true,
  1084. + "dependencies": {
  1085. + "argparse": "^2.0.1",
  1086. + "entities": "^4.4.0",
  1087. + "linkify-it": "^5.0.0",
  1088. + "mdurl": "^2.0.0",
  1089. + "punycode.js": "^2.3.1",
  1090. + "uc.micro": "^2.1.0"
  1091. + },
  1092. + "bin": {
  1093. + "markdown-it": "bin/markdown-it.mjs"
  1094. + }
  1095. + },
  1096. + "node_modules/markdown-it-abbr": {
  1097. + "version": "1.0.4",
  1098. + "resolved": "https://registry.npmmirror.com/markdown-it-abbr/-/markdown-it-abbr-1.0.4.tgz",
  1099. + "integrity": "sha512-ZeA4Z4SaBbYysZap5iZcxKmlPL6bYA8grqhzJIHB1ikn7njnzaP8uwbtuXc4YXD5LicI4/2Xmc0VwmSiFV04gg==",
  1100. + "license": "MIT",
  1101. + "peer": true
  1102. + },
  1103. + "node_modules/markdown-it-deflist": {
  1104. + "version": "2.1.0",
  1105. + "resolved": "https://registry.npmmirror.com/markdown-it-deflist/-/markdown-it-deflist-2.1.0.tgz",
  1106. + "integrity": "sha512-3OuqoRUlSxJiuQYu0cWTLHNhhq2xtoSFqsZK8plANg91+RJQU1ziQ6lA2LzmFAEes18uPBsHZpcX6We5l76Nzg==",
  1107. + "license": "MIT",
  1108. + "peer": true
  1109. + },
  1110. + "node_modules/markdown-it-footnote": {
  1111. + "version": "3.0.3",
  1112. + "resolved": "https://registry.npmmirror.com/markdown-it-footnote/-/markdown-it-footnote-3.0.3.tgz",
  1113. + "integrity": "sha512-YZMSuCGVZAjzKMn+xqIco9d1cLGxbELHZ9do/TSYVzraooV8ypsppKNmUJ0fVH5ljkCInQAtFpm8Rb3eXSrt5w==",
  1114. + "license": "MIT",
  1115. + "peer": true
  1116. + },
  1117. + "node_modules/markdown-it-imsize": {
  1118. + "version": "2.0.1",
  1119. + "resolved": "https://registry.npmmirror.com/markdown-it-imsize/-/markdown-it-imsize-2.0.1.tgz",
  1120. + "integrity": "sha512-5SH90ademqcR8ifQCBXRCfIR4HGfZZOh5pO0j2TglulfSQH+SBXM4Iw/QlTUbSoUwVZArCYgECoMvktDS2kP3w==",
  1121. + "license": "MIT",
  1122. + "peer": true
  1123. + },
  1124. + "node_modules/markdown-it-ins": {
  1125. + "version": "3.0.1",
  1126. + "resolved": "https://registry.npmmirror.com/markdown-it-ins/-/markdown-it-ins-3.0.1.tgz",
  1127. + "integrity": "sha512-32SSfZqSzqyAmmQ4SHvhxbFqSzPDqsZgMHDwxqPzp+v+t8RsmqsBZRG+RfRQskJko9PfKC2/oxyOs4Yg/CfiRw==",
  1128. + "license": "MIT",
  1129. + "peer": true
  1130. + },
  1131. + "node_modules/markdown-it-mark": {
  1132. + "version": "3.0.1",
  1133. + "resolved": "https://registry.npmmirror.com/markdown-it-mark/-/markdown-it-mark-3.0.1.tgz",
  1134. + "integrity": "sha512-HyxjAu6BRsdt6Xcv6TKVQnkz/E70TdGXEFHRYBGLncRE9lBFwDNLVtFojKxjJWgJ+5XxUwLaHXy+2sGBbDn+4A==",
  1135. + "license": "MIT",
  1136. + "peer": true
  1137. + },
  1138. + "node_modules/markdown-it-mathjax": {
  1139. + "version": "2.0.0",
  1140. + "resolved": "https://registry.npmmirror.com/markdown-it-mathjax/-/markdown-it-mathjax-2.0.0.tgz",
  1141. + "integrity": "sha512-Fafv7TnMENccWYTNjMZzV4BzONPxpK9Mknr1iMEK6m7PI5a5UTCOFctPzx7Nhv81fFzYEY8WHDkSu9n43fTV9g==",
  1142. + "license": "ISC",
  1143. + "peer": true
  1144. + },
  1145. + "node_modules/markdown-it-ruby": {
  1146. + "version": "0.1.1",
  1147. + "resolved": "https://registry.npmmirror.com/markdown-it-ruby/-/markdown-it-ruby-0.1.1.tgz",
  1148. + "integrity": "sha512-ct8t/Drt7scv20VdaQtOhpBOC2SDICaW8E/WQS8kY2eUdu0eoDwW8ugXcCy8Vku4Y5CuA5qrewlHpwaFsJxbpQ==",
  1149. + "license": "MIT",
  1150. + "peer": true
  1151. + },
  1152. + "node_modules/markdown-it-sub": {
  1153. + "version": "1.0.0",
  1154. + "resolved": "https://registry.npmmirror.com/markdown-it-sub/-/markdown-it-sub-1.0.0.tgz",
  1155. + "integrity": "sha512-z2Rm/LzEE1wzwTSDrI+FlPEveAAbgdAdPhdWarq/ZGJrGW/uCQbKAnhoCsE4hAbc3SEym26+W2z/VQB0cQiA9Q==",
  1156. + "license": "MIT",
  1157. + "peer": true
  1158. + },
  1159. + "node_modules/markdown-it-sup": {
  1160. + "version": "1.0.0",
  1161. + "resolved": "https://registry.npmmirror.com/markdown-it-sup/-/markdown-it-sup-1.0.0.tgz",
  1162. + "integrity": "sha512-E32m0nV9iyhRR7CrhnzL5msqic7rL1juWre6TQNxsnApg7Uf+F97JOKxUijg5YwXz86lZ0mqfOnutoryyNdntQ==",
  1163. + "license": "MIT",
  1164. + "peer": true
  1165. + },
  1166. "node_modules/math-intrinsics": {
  1167. "version": "1.1.0",
  1168. "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
  1169. @@ -12742,6 +13481,26 @@
  1170. "node": ">= 0.4"
  1171. }
  1172. },
  1173. + "node_modules/mathjax-full": {
  1174. + "version": "3.2.2",
  1175. + "resolved": "https://registry.npmmirror.com/mathjax-full/-/mathjax-full-3.2.2.tgz",
  1176. + "integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==",
  1177. + "license": "Apache-2.0",
  1178. + "peer": true,
  1179. + "dependencies": {
  1180. + "esm": "^3.2.25",
  1181. + "mhchemparser": "^4.1.0",
  1182. + "mj-context-menu": "^0.6.1",
  1183. + "speech-rule-engine": "^4.0.6"
  1184. + }
  1185. + },
  1186. + "node_modules/mdurl": {
  1187. + "version": "2.0.0",
  1188. + "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-2.0.0.tgz",
  1189. + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
  1190. + "license": "MIT",
  1191. + "peer": true
  1192. + },
  1193. "node_modules/media-typer": {
  1194. "version": "0.3.0",
  1195. "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz",
  1196. @@ -12809,6 +13568,13 @@
  1197. "node": ">= 0.6"
  1198. }
  1199. },
  1200. + "node_modules/mhchemparser": {
  1201. + "version": "4.2.1",
  1202. + "resolved": "https://registry.npmmirror.com/mhchemparser/-/mhchemparser-4.2.1.tgz",
  1203. + "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==",
  1204. + "license": "Apache-2.0",
  1205. + "peer": true
  1206. + },
  1207. "node_modules/micromatch": {
  1208. "version": "4.0.8",
  1209. "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz",
  1210. @@ -12836,6 +13602,94 @@
  1211. "url": "https://github.com/sponsors/jonschlinkert"
  1212. }
  1213. },
  1214. + "node_modules/microsoft-cognitiveservices-speech-sdk": {
  1215. + "version": "1.44.1",
  1216. + "resolved": "https://registry.npmmirror.com/microsoft-cognitiveservices-speech-sdk/-/microsoft-cognitiveservices-speech-sdk-1.44.1.tgz",
  1217. + "integrity": "sha512-D4U7G1iQ6za9RQoXYc9ed5KrnWe3q4XIcWQ4DMqAl60CvOSXxSEJqTmTcVjeWVLY2XM9bp+2KKKyWceByAec8A==",
  1218. + "license": "MIT",
  1219. + "peer": true,
  1220. + "dependencies": {
  1221. + "@types/webrtc": "^0.0.37",
  1222. + "agent-base": "^6.0.1",
  1223. + "bent": "^7.3.12",
  1224. + "https-proxy-agent": "^4.0.0",
  1225. + "uuid": "^9.0.0",
  1226. + "ws": "^7.5.6"
  1227. + }
  1228. + },
  1229. + "node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/agent-base": {
  1230. + "version": "6.0.2",
  1231. + "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
  1232. + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
  1233. + "license": "MIT",
  1234. + "peer": true,
  1235. + "dependencies": {
  1236. + "debug": "4"
  1237. + },
  1238. + "engines": {
  1239. + "node": ">= 6.0.0"
  1240. + }
  1241. + },
  1242. + "node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/https-proxy-agent": {
  1243. + "version": "4.0.0",
  1244. + "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz",
  1245. + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==",
  1246. + "license": "MIT",
  1247. + "peer": true,
  1248. + "dependencies": {
  1249. + "agent-base": "5",
  1250. + "debug": "4"
  1251. + },
  1252. + "engines": {
  1253. + "node": ">= 6.0.0"
  1254. + }
  1255. + },
  1256. + "node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/https-proxy-agent/node_modules/agent-base": {
  1257. + "version": "5.1.1",
  1258. + "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-5.1.1.tgz",
  1259. + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==",
  1260. + "license": "MIT",
  1261. + "peer": true,
  1262. + "engines": {
  1263. + "node": ">= 6.0.0"
  1264. + }
  1265. + },
  1266. + "node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid": {
  1267. + "version": "9.0.1",
  1268. + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-9.0.1.tgz",
  1269. + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
  1270. + "funding": [
  1271. + "https://github.com/sponsors/broofa",
  1272. + "https://github.com/sponsors/ctavan"
  1273. + ],
  1274. + "license": "MIT",
  1275. + "peer": true,
  1276. + "bin": {
  1277. + "uuid": "dist/bin/uuid"
  1278. + }
  1279. + },
  1280. + "node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/ws": {
  1281. + "version": "7.5.10",
  1282. + "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.10.tgz",
  1283. + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==",
  1284. + "license": "MIT",
  1285. + "peer": true,
  1286. + "engines": {
  1287. + "node": ">=8.3.0"
  1288. + },
  1289. + "peerDependencies": {
  1290. + "bufferutil": "^4.0.1",
  1291. + "utf-8-validate": "^5.0.2"
  1292. + },
  1293. + "peerDependenciesMeta": {
  1294. + "bufferutil": {
  1295. + "optional": true
  1296. + },
  1297. + "utf-8-validate": {
  1298. + "optional": true
  1299. + }
  1300. + }
  1301. + },
  1302. "node_modules/mime": {
  1303. "version": "2.6.0",
  1304. "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz",
  1305. @@ -13102,6 +13956,13 @@
  1306. "node": ">= 18"
  1307. }
  1308. },
  1309. + "node_modules/mj-context-menu": {
  1310. + "version": "0.6.1",
  1311. + "resolved": "https://registry.npmmirror.com/mj-context-menu/-/mj-context-menu-0.6.1.tgz",
  1312. + "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==",
  1313. + "license": "Apache-2.0",
  1314. + "peer": true
  1315. + },
  1316. "node_modules/mkdirp": {
  1317. "version": "0.5.6",
  1318. "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz",
  1319. @@ -13129,7 +13990,6 @@
  1320. "version": "2.1.3",
  1321. "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
  1322. "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
  1323. - "dev": true,
  1324. "license": "MIT"
  1325. },
  1326. "node_modules/msgpackr": {
  1327. @@ -13180,6 +14040,16 @@
  1328. "multicast-dns": "cli.js"
  1329. }
  1330. },
  1331. + "node_modules/mustache": {
  1332. + "version": "4.2.0",
  1333. + "resolved": "https://registry.npmmirror.com/mustache/-/mustache-4.2.0.tgz",
  1334. + "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==",
  1335. + "license": "MIT",
  1336. + "peer": true,
  1337. + "bin": {
  1338. + "mustache": "bin/mustache"
  1339. + }
  1340. + },
  1341. "node_modules/mute-stream": {
  1342. "version": "2.0.0",
  1343. "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-2.0.0.tgz",
  1344. @@ -13301,18 +14171,55 @@
  1345. "dev": true,
  1346. "license": "MIT"
  1347. },
  1348. - "node_modules/node-addon-api": {
  1349. - "version": "6.1.0",
  1350. - "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-6.1.0.tgz",
  1351. - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==",
  1352. - "dev": true,
  1353. + "node_modules/ng-qrcode": {
  1354. + "version": "19.0.1",
  1355. + "resolved": "https://registry.npmmirror.com/ng-qrcode/-/ng-qrcode-19.0.1.tgz",
  1356. + "integrity": "sha512-8m4dqxSY7OSxJA7X0BEC7zJVLZ1QRw4ez5m440J7yq3HA8ixIa/hvQUjQLXJjbGUl33bjR9HNUPd9ZKxBmxnyA==",
  1357. "license": "MIT",
  1358. - "optional": true
  1359. + "peer": true,
  1360. + "dependencies": {
  1361. + "qrcode": "^1.5.3",
  1362. + "tslib": "^2.6.2"
  1363. + },
  1364. + "peerDependencies": {
  1365. + "@angular/common": ">=19 <20",
  1366. + "@angular/core": ">=19 <20"
  1367. + }
  1368. },
  1369. - "node_modules/node-forge": {
  1370. - "version": "1.3.1",
  1371. - "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-1.3.1.tgz",
  1372. - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
  1373. + "node_modules/ng-zorro-antd": {
  1374. + "version": "19.3.1",
  1375. + "resolved": "https://registry.npmmirror.com/ng-zorro-antd/-/ng-zorro-antd-19.3.1.tgz",
  1376. + "integrity": "sha512-EyYbUcnoF1AQmjA0QDtw+VDy2frhz2i0EqrnE8j+PC78MqerQMTBGmVS7igU6Xd8Y1QLQMvzgrv9lEduHygjjQ==",
  1377. + "license": "MIT",
  1378. + "peer": true,
  1379. + "dependencies": {
  1380. + "@angular/cdk": "^19.0.0",
  1381. + "@ant-design/icons-angular": "^19.0.0",
  1382. + "@ctrl/tinycolor": "^3.6.0",
  1383. + "date-fns": "^2.16.1",
  1384. + "tslib": "^2.3.0"
  1385. + },
  1386. + "peerDependencies": {
  1387. + "@angular/animations": "^19.0.0",
  1388. + "@angular/common": "^19.0.0",
  1389. + "@angular/core": "^19.0.0",
  1390. + "@angular/forms": "^19.0.0",
  1391. + "@angular/platform-browser": "^19.0.0",
  1392. + "@angular/router": "^19.0.0"
  1393. + }
  1394. + },
  1395. + "node_modules/node-addon-api": {
  1396. + "version": "6.1.0",
  1397. + "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-6.1.0.tgz",
  1398. + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==",
  1399. + "dev": true,
  1400. + "license": "MIT",
  1401. + "optional": true
  1402. + },
  1403. + "node_modules/node-forge": {
  1404. + "version": "1.3.1",
  1405. + "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-1.3.1.tgz",
  1406. + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==",
  1407. "dev": true,
  1408. "license": "(BSD-3-Clause OR GPL-2.0)",
  1409. "engines": {
  1410. @@ -13930,6 +14837,16 @@
  1411. "url": "https://github.com/sponsors/ljharb"
  1412. }
  1413. },
  1414. + "node_modules/p-finally": {
  1415. + "version": "1.0.0",
  1416. + "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz",
  1417. + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
  1418. + "license": "MIT",
  1419. + "peer": true,
  1420. + "engines": {
  1421. + "node": ">=4"
  1422. + }
  1423. + },
  1424. "node_modules/p-limit": {
  1425. "version": "3.1.0",
  1426. "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz",
  1427. @@ -13975,6 +14892,23 @@
  1428. "url": "https://github.com/sponsors/sindresorhus"
  1429. }
  1430. },
  1431. + "node_modules/p-queue": {
  1432. + "version": "6.6.2",
  1433. + "resolved": "https://registry.npmmirror.com/p-queue/-/p-queue-6.6.2.tgz",
  1434. + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==",
  1435. + "license": "MIT",
  1436. + "peer": true,
  1437. + "dependencies": {
  1438. + "eventemitter3": "^4.0.4",
  1439. + "p-timeout": "^3.2.0"
  1440. + },
  1441. + "engines": {
  1442. + "node": ">=8"
  1443. + },
  1444. + "funding": {
  1445. + "url": "https://github.com/sponsors/sindresorhus"
  1446. + }
  1447. + },
  1448. "node_modules/p-retry": {
  1449. "version": "6.2.1",
  1450. "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-6.2.1.tgz",
  1451. @@ -14003,6 +14937,29 @@
  1452. "node": ">= 4"
  1453. }
  1454. },
  1455. + "node_modules/p-timeout": {
  1456. + "version": "3.2.0",
  1457. + "resolved": "https://registry.npmmirror.com/p-timeout/-/p-timeout-3.2.0.tgz",
  1458. + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
  1459. + "license": "MIT",
  1460. + "peer": true,
  1461. + "dependencies": {
  1462. + "p-finally": "^1.0.0"
  1463. + },
  1464. + "engines": {
  1465. + "node": ">=8"
  1466. + }
  1467. + },
  1468. + "node_modules/p-try": {
  1469. + "version": "2.2.0",
  1470. + "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
  1471. + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
  1472. + "license": "MIT",
  1473. + "peer": true,
  1474. + "engines": {
  1475. + "node": ">=6"
  1476. + }
  1477. + },
  1478. "node_modules/package-json-from-dist": {
  1479. "version": "1.0.1",
  1480. "resolved": "https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
  1481. @@ -14055,6 +15012,27 @@
  1482. "node": ">=6"
  1483. }
  1484. },
  1485. + "node_modules/parse": {
  1486. + "version": "5.3.0",
  1487. + "resolved": "https://registry.npmmirror.com/parse/-/parse-5.3.0.tgz",
  1488. + "integrity": "sha512-mWBnE6hHJhdvlx5KPQcYgCGRdgqKhPw+5fSC0j7vOfse3Lkh3xtDwOfmDpvv2LXZVBj72G/mgVKMRmbAICRzkQ==",
  1489. + "license": "Apache-2.0",
  1490. + "peer": true,
  1491. + "dependencies": {
  1492. + "@babel/runtime-corejs3": "7.24.7",
  1493. + "idb-keyval": "6.2.1",
  1494. + "react-native-crypto-js": "1.0.0",
  1495. + "uuid": "10.0.0",
  1496. + "ws": "8.17.1",
  1497. + "xmlhttprequest": "1.8.0"
  1498. + },
  1499. + "engines": {
  1500. + "node": "18 || 19 || 20 || 22"
  1501. + },
  1502. + "optionalDependencies": {
  1503. + "crypto-js": "4.2.0"
  1504. + }
  1505. + },
  1506. "node_modules/parse-imports": {
  1507. "version": "2.2.1",
  1508. "resolved": "https://registry.npmmirror.com/parse-imports/-/parse-imports-2.2.1.tgz",
  1509. @@ -14105,11 +15083,24 @@
  1510. "node": ">= 0.10"
  1511. }
  1512. },
  1513. + "node_modules/parse/node_modules/uuid": {
  1514. + "version": "10.0.0",
  1515. + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-10.0.0.tgz",
  1516. + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==",
  1517. + "funding": [
  1518. + "https://github.com/sponsors/broofa",
  1519. + "https://github.com/sponsors/ctavan"
  1520. + ],
  1521. + "license": "MIT",
  1522. + "peer": true,
  1523. + "bin": {
  1524. + "uuid": "dist/bin/uuid"
  1525. + }
  1526. + },
  1527. "node_modules/parse5": {
  1528. "version": "7.3.0",
  1529. "resolved": "https://registry.npmmirror.com/parse5/-/parse5-7.3.0.tgz",
  1530. "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
  1531. - "dev": true,
  1532. "license": "MIT",
  1533. "dependencies": {
  1534. "entities": "^6.0.0"
  1535. @@ -14150,7 +15141,6 @@
  1536. "version": "6.0.0",
  1537. "resolved": "https://registry.npmmirror.com/entities/-/entities-6.0.0.tgz",
  1538. "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==",
  1539. - "dev": true,
  1540. "license": "BSD-2-Clause",
  1541. "engines": {
  1542. "node": ">=0.12"
  1543. @@ -14173,7 +15163,6 @@
  1544. "version": "4.0.0",
  1545. "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
  1546. "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
  1547. - "dev": true,
  1548. "license": "MIT",
  1549. "engines": {
  1550. "node": ">=8"
  1551. @@ -14402,6 +15391,13 @@
  1552. "url": "https://github.com/sponsors/sindresorhus"
  1553. }
  1554. },
  1555. + "node_modules/plantuml-encoder": {
  1556. + "version": "1.4.0",
  1557. + "resolved": "https://registry.npmmirror.com/plantuml-encoder/-/plantuml-encoder-1.4.0.tgz",
  1558. + "integrity": "sha512-sxMwpDw/ySY1WB2CE3+IdMuEcWibJ72DDOsXLkSmEaSzwEUaYBT6DWgOfBiHGCux4q433X6+OEFWjlVqp7gL6g==",
  1559. + "license": "MIT",
  1560. + "peer": true
  1561. + },
  1562. "node_modules/plist": {
  1563. "version": "3.1.0",
  1564. "resolved": "https://registry.npmmirror.com/plist/-/plist-3.1.0.tgz",
  1565. @@ -14417,6 +15413,16 @@
  1566. "node": ">=10.4.0"
  1567. }
  1568. },
  1569. + "node_modules/pngjs": {
  1570. + "version": "5.0.0",
  1571. + "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
  1572. + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
  1573. + "license": "MIT",
  1574. + "peer": true,
  1575. + "engines": {
  1576. + "node": ">=10.13.0"
  1577. + }
  1578. + },
  1579. "node_modules/possible-typed-array-names": {
  1580. "version": "1.1.0",
  1581. "resolved": "https://registry.npmmirror.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
  1582. @@ -14683,6 +15689,28 @@
  1583. "dev": true,
  1584. "license": "MIT"
  1585. },
  1586. + "node_modules/punycode.js": {
  1587. + "version": "2.3.1",
  1588. + "resolved": "https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz",
  1589. + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
  1590. + "license": "MIT",
  1591. + "peer": true,
  1592. + "engines": {
  1593. + "node": ">=6"
  1594. + }
  1595. + },
  1596. + "node_modules/qiniu-js": {
  1597. + "version": "3.4.2",
  1598. + "resolved": "https://registry.npmmirror.com/qiniu-js/-/qiniu-js-3.4.2.tgz",
  1599. + "integrity": "sha512-Gu94/4adN2FnM9VpTgLsgvS3KN+2ZV9gCxlmrKICMI7VqcAwTsy3+9eBLLk8WueMYwniyg8rELjdxNf0wABUHg==",
  1600. + "license": "MIT",
  1601. + "peer": true,
  1602. + "dependencies": {
  1603. + "@babel/runtime-corejs2": "^7.10.2",
  1604. + "querystring": "^0.2.1",
  1605. + "spark-md5": "^3.0.0"
  1606. + }
  1607. + },
  1608. "node_modules/qjobs": {
  1609. "version": "1.2.0",
  1610. "resolved": "https://registry.npmmirror.com/qjobs/-/qjobs-1.2.0.tgz",
  1611. @@ -14693,6 +15721,201 @@
  1612. "node": ">=0.9"
  1613. }
  1614. },
  1615. + "node_modules/qrcode": {
  1616. + "version": "1.5.4",
  1617. + "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.4.tgz",
  1618. + "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==",
  1619. + "license": "MIT",
  1620. + "peer": true,
  1621. + "dependencies": {
  1622. + "dijkstrajs": "^1.0.1",
  1623. + "pngjs": "^5.0.0",
  1624. + "yargs": "^15.3.1"
  1625. + },
  1626. + "bin": {
  1627. + "qrcode": "bin/qrcode"
  1628. + },
  1629. + "engines": {
  1630. + "node": ">=10.13.0"
  1631. + }
  1632. + },
  1633. + "node_modules/qrcode/node_modules/ansi-regex": {
  1634. + "version": "5.0.1",
  1635. + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
  1636. + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
  1637. + "license": "MIT",
  1638. + "peer": true,
  1639. + "engines": {
  1640. + "node": ">=8"
  1641. + }
  1642. + },
  1643. + "node_modules/qrcode/node_modules/camelcase": {
  1644. + "version": "5.3.1",
  1645. + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
  1646. + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
  1647. + "license": "MIT",
  1648. + "peer": true,
  1649. + "engines": {
  1650. + "node": ">=6"
  1651. + }
  1652. + },
  1653. + "node_modules/qrcode/node_modules/cliui": {
  1654. + "version": "6.0.0",
  1655. + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
  1656. + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
  1657. + "license": "ISC",
  1658. + "peer": true,
  1659. + "dependencies": {
  1660. + "string-width": "^4.2.0",
  1661. + "strip-ansi": "^6.0.0",
  1662. + "wrap-ansi": "^6.2.0"
  1663. + }
  1664. + },
  1665. + "node_modules/qrcode/node_modules/emoji-regex": {
  1666. + "version": "8.0.0",
  1667. + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
  1668. + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
  1669. + "license": "MIT",
  1670. + "peer": true
  1671. + },
  1672. + "node_modules/qrcode/node_modules/find-up": {
  1673. + "version": "4.1.0",
  1674. + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
  1675. + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
  1676. + "license": "MIT",
  1677. + "peer": true,
  1678. + "dependencies": {
  1679. + "locate-path": "^5.0.0",
  1680. + "path-exists": "^4.0.0"
  1681. + },
  1682. + "engines": {
  1683. + "node": ">=8"
  1684. + }
  1685. + },
  1686. + "node_modules/qrcode/node_modules/is-fullwidth-code-point": {
  1687. + "version": "3.0.0",
  1688. + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
  1689. + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
  1690. + "license": "MIT",
  1691. + "peer": true,
  1692. + "engines": {
  1693. + "node": ">=8"
  1694. + }
  1695. + },
  1696. + "node_modules/qrcode/node_modules/locate-path": {
  1697. + "version": "5.0.0",
  1698. + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
  1699. + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
  1700. + "license": "MIT",
  1701. + "peer": true,
  1702. + "dependencies": {
  1703. + "p-locate": "^4.1.0"
  1704. + },
  1705. + "engines": {
  1706. + "node": ">=8"
  1707. + }
  1708. + },
  1709. + "node_modules/qrcode/node_modules/p-limit": {
  1710. + "version": "2.3.0",
  1711. + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
  1712. + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
  1713. + "license": "MIT",
  1714. + "peer": true,
  1715. + "dependencies": {
  1716. + "p-try": "^2.0.0"
  1717. + },
  1718. + "engines": {
  1719. + "node": ">=6"
  1720. + },
  1721. + "funding": {
  1722. + "url": "https://github.com/sponsors/sindresorhus"
  1723. + }
  1724. + },
  1725. + "node_modules/qrcode/node_modules/p-locate": {
  1726. + "version": "4.1.0",
  1727. + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
  1728. + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
  1729. + "license": "MIT",
  1730. + "peer": true,
  1731. + "dependencies": {
  1732. + "p-limit": "^2.2.0"
  1733. + },
  1734. + "engines": {
  1735. + "node": ">=8"
  1736. + }
  1737. + },
  1738. + "node_modules/qrcode/node_modules/string-width": {
  1739. + "version": "4.2.3",
  1740. + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
  1741. + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
  1742. + "license": "MIT",
  1743. + "peer": true,
  1744. + "dependencies": {
  1745. + "emoji-regex": "^8.0.0",
  1746. + "is-fullwidth-code-point": "^3.0.0",
  1747. + "strip-ansi": "^6.0.1"
  1748. + },
  1749. + "engines": {
  1750. + "node": ">=8"
  1751. + }
  1752. + },
  1753. + "node_modules/qrcode/node_modules/strip-ansi": {
  1754. + "version": "6.0.1",
  1755. + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
  1756. + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
  1757. + "license": "MIT",
  1758. + "peer": true,
  1759. + "dependencies": {
  1760. + "ansi-regex": "^5.0.1"
  1761. + },
  1762. + "engines": {
  1763. + "node": ">=8"
  1764. + }
  1765. + },
  1766. + "node_modules/qrcode/node_modules/y18n": {
  1767. + "version": "4.0.3",
  1768. + "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
  1769. + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
  1770. + "license": "ISC",
  1771. + "peer": true
  1772. + },
  1773. + "node_modules/qrcode/node_modules/yargs": {
  1774. + "version": "15.4.1",
  1775. + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
  1776. + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
  1777. + "license": "MIT",
  1778. + "peer": true,
  1779. + "dependencies": {
  1780. + "cliui": "^6.0.0",
  1781. + "decamelize": "^1.2.0",
  1782. + "find-up": "^4.1.0",
  1783. + "get-caller-file": "^2.0.1",
  1784. + "require-directory": "^2.1.1",
  1785. + "require-main-filename": "^2.0.0",
  1786. + "set-blocking": "^2.0.0",
  1787. + "string-width": "^4.2.0",
  1788. + "which-module": "^2.0.0",
  1789. + "y18n": "^4.0.0",
  1790. + "yargs-parser": "^18.1.2"
  1791. + },
  1792. + "engines": {
  1793. + "node": ">=8"
  1794. + }
  1795. + },
  1796. + "node_modules/qrcode/node_modules/yargs-parser": {
  1797. + "version": "18.1.3",
  1798. + "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
  1799. + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
  1800. + "license": "ISC",
  1801. + "peer": true,
  1802. + "dependencies": {
  1803. + "camelcase": "^5.0.0",
  1804. + "decamelize": "^1.2.0"
  1805. + },
  1806. + "engines": {
  1807. + "node": ">=6"
  1808. + }
  1809. + },
  1810. "node_modules/qs": {
  1811. "version": "6.13.0",
  1812. "resolved": "https://registry.npmmirror.com/qs/-/qs-6.13.0.tgz",
  1813. @@ -14709,6 +15932,17 @@
  1814. "url": "https://github.com/sponsors/ljharb"
  1815. }
  1816. },
  1817. + "node_modules/querystring": {
  1818. + "version": "0.2.1",
  1819. + "resolved": "https://registry.npmmirror.com/querystring/-/querystring-0.2.1.tgz",
  1820. + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==",
  1821. + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
  1822. + "license": "MIT",
  1823. + "peer": true,
  1824. + "engines": {
  1825. + "node": ">=0.4.x"
  1826. + }
  1827. + },
  1828. "node_modules/queue-microtask": {
  1829. "version": "1.2.3",
  1830. "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
  1831. @@ -14766,6 +16000,13 @@
  1832. "node": ">= 0.8"
  1833. }
  1834. },
  1835. + "node_modules/react-native-crypto-js": {
  1836. + "version": "1.0.0",
  1837. + "resolved": "https://registry.npmmirror.com/react-native-crypto-js/-/react-native-crypto-js-1.0.0.tgz",
  1838. + "integrity": "sha512-FNbLuG/HAdapQoybeZSoes1PWdOj0w242gb+e1R0hicf3Gyj/Mf8M9NaED2AnXVOX01b2FXomwUiw1xP1K+8sA==",
  1839. + "license": "MIT",
  1840. + "peer": true
  1841. + },
  1842. "node_modules/readable-stream": {
  1843. "version": "3.6.2",
  1844. "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
  1845. @@ -14795,6 +16036,13 @@
  1846. "url": "https://paulmillr.com/funding/"
  1847. }
  1848. },
  1849. + "node_modules/recorder-core": {
  1850. + "version": "1.3.25011100",
  1851. + "resolved": "https://registry.npmmirror.com/recorder-core/-/recorder-core-1.3.25011100.tgz",
  1852. + "integrity": "sha512-trXsCH0zurhoizT4Z22C0OsM0SDOW+2OvtgRxeLQFwxoFeqFjDjYZsbZEZUiKMJLhBvamI4K7Ic+qZ2LBo74TA==",
  1853. + "license": "MIT",
  1854. + "peer": true
  1855. + },
  1856. "node_modules/reflect-metadata": {
  1857. "version": "0.2.2",
  1858. "resolved": "https://registry.npmmirror.com/reflect-metadata/-/reflect-metadata-0.2.2.tgz",
  1859. @@ -14849,7 +16097,6 @@
  1860. "version": "0.14.1",
  1861. "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
  1862. "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
  1863. - "dev": true,
  1864. "license": "MIT"
  1865. },
  1866. "node_modules/regenerator-transform": {
  1867. @@ -14945,7 +16192,6 @@
  1868. "version": "2.1.1",
  1869. "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
  1870. "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
  1871. - "dev": true,
  1872. "license": "MIT",
  1873. "engines": {
  1874. "node": ">=0.10.0"
  1875. @@ -14961,6 +16207,13 @@
  1876. "node": ">=0.10.0"
  1877. }
  1878. },
  1879. + "node_modules/require-main-filename": {
  1880. + "version": "2.0.0",
  1881. + "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
  1882. + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
  1883. + "license": "ISC",
  1884. + "peer": true
  1885. + },
  1886. "node_modules/requires-port": {
  1887. "version": "1.0.0",
  1888. "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
  1889. @@ -15410,7 +16663,6 @@
  1890. "version": "7.7.1",
  1891. "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.1.tgz",
  1892. "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
  1893. - "dev": true,
  1894. "license": "ISC",
  1895. "bin": {
  1896. "semver": "bin/semver.js"
  1897. @@ -15596,6 +16848,13 @@
  1898. "node": ">= 0.8"
  1899. }
  1900. },
  1901. + "node_modules/set-blocking": {
  1902. + "version": "2.0.0",
  1903. + "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
  1904. + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
  1905. + "license": "ISC",
  1906. + "peer": true
  1907. + },
  1908. "node_modules/set-function-length": {
  1909. "version": "1.2.2",
  1910. "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz",
  1911. @@ -15808,6 +17067,13 @@
  1912. "node": "^18.17.0 || >=20.5.0"
  1913. }
  1914. },
  1915. + "node_modules/simple-wcswidth": {
  1916. + "version": "1.0.1",
  1917. + "resolved": "https://registry.npmmirror.com/simple-wcswidth/-/simple-wcswidth-1.0.1.tgz",
  1918. + "integrity": "sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg==",
  1919. + "license": "MIT",
  1920. + "peer": true
  1921. + },
  1922. "node_modules/sisteransi": {
  1923. "version": "1.0.5",
  1924. "resolved": "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz",
  1925. @@ -16091,6 +17357,13 @@
  1926. "node": ">=0.10.0"
  1927. }
  1928. },
  1929. + "node_modules/spark-md5": {
  1930. + "version": "3.0.2",
  1931. + "resolved": "https://registry.npmmirror.com/spark-md5/-/spark-md5-3.0.2.tgz",
  1932. + "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==",
  1933. + "license": "(WTFPL OR MIT)",
  1934. + "peer": true
  1935. + },
  1936. "node_modules/spdx-correct": {
  1937. "version": "3.2.0",
  1938. "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz",
  1939. @@ -16170,6 +17443,41 @@
  1940. "wbuf": "^1.7.3"
  1941. }
  1942. },
  1943. + "node_modules/speech-rule-engine": {
  1944. + "version": "4.1.2",
  1945. + "resolved": "https://registry.npmmirror.com/speech-rule-engine/-/speech-rule-engine-4.1.2.tgz",
  1946. + "integrity": "sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==",
  1947. + "license": "Apache-2.0",
  1948. + "peer": true,
  1949. + "dependencies": {
  1950. + "@xmldom/xmldom": "0.9.8",
  1951. + "commander": "13.1.0",
  1952. + "wicked-good-xpath": "1.3.0"
  1953. + },
  1954. + "bin": {
  1955. + "sre": "bin/sre"
  1956. + }
  1957. + },
  1958. + "node_modules/speech-rule-engine/node_modules/@xmldom/xmldom": {
  1959. + "version": "0.9.8",
  1960. + "resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.9.8.tgz",
  1961. + "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==",
  1962. + "license": "MIT",
  1963. + "peer": true,
  1964. + "engines": {
  1965. + "node": ">=14.6"
  1966. + }
  1967. + },
  1968. + "node_modules/speech-rule-engine/node_modules/commander": {
  1969. + "version": "13.1.0",
  1970. + "resolved": "https://registry.npmmirror.com/commander/-/commander-13.1.0.tgz",
  1971. + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==",
  1972. + "license": "MIT",
  1973. + "peer": true,
  1974. + "engines": {
  1975. + "node": ">=18"
  1976. + }
  1977. + },
  1978. "node_modules/split2": {
  1979. "version": "4.2.0",
  1980. "resolved": "https://registry.npmmirror.com/split2/-/split2-4.2.0.tgz",
  1981. @@ -16435,7 +17743,6 @@
  1982. "version": "7.2.0",
  1983. "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
  1984. "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
  1985. - "dev": true,
  1986. "license": "MIT",
  1987. "dependencies": {
  1988. "has-flag": "^4.0.0"
  1989. @@ -16985,6 +18292,13 @@
  1990. "node": "*"
  1991. }
  1992. },
  1993. + "node_modules/uc.micro": {
  1994. + "version": "2.1.0",
  1995. + "resolved": "https://registry.npmmirror.com/uc.micro/-/uc.micro-2.1.0.tgz",
  1996. + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
  1997. + "license": "MIT",
  1998. + "peer": true
  1999. + },
  2000. "node_modules/unbox-primitive": {
  2001. "version": "1.1.0",
  2002. "resolved": "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
  2003. @@ -17008,7 +18322,6 @@
  2004. "version": "6.21.0",
  2005. "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.21.0.tgz",
  2006. "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
  2007. - "dev": true,
  2008. "license": "MIT"
  2009. },
  2010. "node_modules/unicode-canonical-property-names-ecmascript": {
  2011. @@ -17175,6 +18488,13 @@
  2012. "node": ">=6"
  2013. }
  2014. },
  2015. + "node_modules/urijs": {
  2016. + "version": "1.19.11",
  2017. + "resolved": "https://registry.npmmirror.com/urijs/-/urijs-1.19.11.tgz",
  2018. + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==",
  2019. + "license": "MIT",
  2020. + "peer": true
  2021. + },
  2022. "node_modules/util-deprecate": {
  2023. "version": "1.0.2",
  2024. "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
  2025. @@ -18159,6 +19479,13 @@
  2026. "url": "https://github.com/sponsors/ljharb"
  2027. }
  2028. },
  2029. + "node_modules/which-module": {
  2030. + "version": "2.0.1",
  2031. + "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
  2032. + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
  2033. + "license": "ISC",
  2034. + "peer": true
  2035. + },
  2036. "node_modules/which-typed-array": {
  2037. "version": "1.1.19",
  2038. "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.19.tgz",
  2039. @@ -18181,6 +19508,13 @@
  2040. "url": "https://github.com/sponsors/ljharb"
  2041. }
  2042. },
  2043. + "node_modules/wicked-good-xpath": {
  2044. + "version": "1.3.0",
  2045. + "resolved": "https://registry.npmmirror.com/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz",
  2046. + "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==",
  2047. + "license": "MIT",
  2048. + "peer": true
  2049. + },
  2050. "node_modules/wildcard": {
  2051. "version": "2.0.1",
  2052. "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-2.0.1.tgz",
  2053. @@ -18202,7 +19536,6 @@
  2054. "version": "6.2.0",
  2055. "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
  2056. "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
  2057. - "dev": true,
  2058. "license": "MIT",
  2059. "dependencies": {
  2060. "ansi-styles": "^4.0.0",
  2061. @@ -18291,7 +19624,6 @@
  2062. "version": "5.0.1",
  2063. "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
  2064. "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
  2065. - "dev": true,
  2066. "license": "MIT",
  2067. "engines": {
  2068. "node": ">=8"
  2069. @@ -18301,14 +19633,12 @@
  2070. "version": "8.0.0",
  2071. "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
  2072. "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
  2073. - "dev": true,
  2074. "license": "MIT"
  2075. },
  2076. "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
  2077. "version": "3.0.0",
  2078. "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
  2079. "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
  2080. - "dev": true,
  2081. "license": "MIT",
  2082. "engines": {
  2083. "node": ">=8"
  2084. @@ -18318,7 +19648,6 @@
  2085. "version": "4.2.3",
  2086. "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
  2087. "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
  2088. - "dev": true,
  2089. "license": "MIT",
  2090. "dependencies": {
  2091. "emoji-regex": "^8.0.0",
  2092. @@ -18333,7 +19662,6 @@
  2093. "version": "6.0.1",
  2094. "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
  2095. "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
  2096. - "dev": true,
  2097. "license": "MIT",
  2098. "dependencies": {
  2099. "ansi-regex": "^5.0.1"
  2100. @@ -18353,7 +19681,6 @@
  2101. "version": "8.17.1",
  2102. "resolved": "https://registry.npmmirror.com/ws/-/ws-8.17.1.tgz",
  2103. "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
  2104. - "dev": true,
  2105. "license": "MIT",
  2106. "engines": {
  2107. "node": ">=10.0.0"
  2108. @@ -18405,6 +19732,16 @@
  2109. "node": ">=8.0"
  2110. }
  2111. },
  2112. + "node_modules/xmlhttprequest": {
  2113. + "version": "1.8.0",
  2114. + "resolved": "https://registry.npmmirror.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
  2115. + "integrity": "sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==",
  2116. + "license": "MIT",
  2117. + "peer": true,
  2118. + "engines": {
  2119. + "node": ">=0.4.0"
  2120. + }
  2121. + },
  2122. "node_modules/y18n": {
  2123. "version": "5.0.8",
  2124. "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz",
  2125. @@ -18543,6 +19880,26 @@
  2126. "url": "https://github.com/sponsors/sindresorhus"
  2127. }
  2128. },
  2129. + "node_modules/zod": {
  2130. + "version": "3.25.51",
  2131. + "resolved": "https://registry.npmmirror.com/zod/-/zod-3.25.51.tgz",
  2132. + "integrity": "sha512-TQSnBldh+XSGL+opiSIq0575wvDPqu09AqWe1F7JhUMKY+M91/aGlK4MhpVNO7MgYfHcVCB1ffwAUTJzllKJqg==",
  2133. + "license": "MIT",
  2134. + "peer": true,
  2135. + "funding": {
  2136. + "url": "https://github.com/sponsors/colinhacks"
  2137. + }
  2138. + },
  2139. + "node_modules/zod-to-json-schema": {
  2140. + "version": "3.24.5",
  2141. + "resolved": "https://registry.npmmirror.com/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz",
  2142. + "integrity": "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==",
  2143. + "license": "ISC",
  2144. + "peer": true,
  2145. + "peerDependencies": {
  2146. + "zod": "^3.24.1"
  2147. + }
  2148. + },
  2149. "node_modules/zone.js": {
  2150. "version": "0.15.0",
  2151. "resolved": "https://registry.npmmirror.com/zone.js/-/zone.js-0.15.0.tgz",
  2152. diff --git a/package.json b/package.json
  2153. index 48b53e4..e618e06 100644
  2154. --- a/package.json
  2155. +++ b/package.json
  2156. @@ -27,6 +27,7 @@
  2157. "@capacitor/keyboard": "7.0.1",
  2158. "@capacitor/status-bar": "7.0.1",
  2159. "@ionic/angular": "^8.0.0",
  2160. + "fmode-ng": "^0.0.83",
  2161. "ionicons": "^7.0.0",
  2162. "rxjs": "~7.8.0",
  2163. "tslib": "^2.3.0",
  2164. diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
  2165. index 48fc28d..03f03ca 100644
  2166. --- a/src/app/app-routing.module.ts
  2167. +++ b/src/app/app-routing.module.ts
  2168. @@ -5,6 +5,7 @@ const routes: Routes = [
  2169. {
  2170. path: '',
  2171. loadChildren: () => import('./tabs/tabs.module').then(m => m.TabsPageModule)
  2172. +
  2173. }
  2174. ];
  2175. @NgModule({
  2176. diff --git a/src/app/app.module.ts b/src/app/app.module.ts
  2177. index 4255dd8..eb8e24f 100644
  2178. --- a/src/app/app.module.ts
  2179. +++ b/src/app/app.module.ts
  2180. @@ -7,10 +7,26 @@ import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
  2181. import { AppRoutingModule } from './app-routing.module';
  2182. import { AppComponent } from './app.component';
  2183. +// fmode-ng依赖的服务
  2184. +import { HttpClientModule } from '@angular/common/http';
  2185. +import { Diagnostic } from '@awesome-cordova-plugins/diagnostic/ngx';
  2186. +// 设置Parse服务属性
  2187. +import Parse from "parse";
  2188. +Parse.initialize("ncloudmaster");
  2189. +Parse.serverURL = "https://server.fmode.cn/parse";
  2190. +localStorage.setItem("NOVA_APIG_SERVER", 'aHR0cHMlM0ElMkYlMkZzZXJ2ZXIuZm1vZGUuY24lMkZhcGklMkZhcGlnJTJG')
  2191. +
  2192. @NgModule({
  2193. declarations: [AppComponent],
  2194. - imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
  2195. - providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
  2196. + imports: [
  2197. + HttpClientModule,
  2198. + BrowserModule,
  2199. + IonicModule.forRoot(),
  2200. + AppRoutingModule],
  2201. + providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
  2202. + //fmode-ng 依赖服务注入
  2203. + Diagnostic,
  2204. + ],
  2205. bootstrap: [AppComponent],
  2206. })
  2207. export class AppModule {}
  2208. diff --git a/src/app/tab1/tab1.page.html b/src/app/tab1/tab1.page.html
  2209. index 651fc1d..44923b7 100644
  2210. --- a/src/app/tab1/tab1.page.html
  2211. +++ b/src/app/tab1/tab1.page.html
  2212. @@ -1,5 +1,6 @@
  2213. +
  2214. <ion-content [fullscreen]="true">
  2215. <header class="header">
  2216. <div class="container header-container">
  2217. @@ -13,126 +14,182 @@
  2218. </div>
  2219. </div>
  2220. </header>
  2221. - <div id="home-page" class="page active">
  2222. - <div class="container">
  2223. - <!-- 轮播广告区 -->
  2224. - <div class="section">
  2225. - <div class="banner">
  2226. -
  2227. - <div class="banner-dots">
  2228. - <div class="banner-dot active"></div>
  2229. - <div class="banner-dot"></div>
  2230. - <div class="banner-dot"></div>
  2231. - </div>
  2232. - </div>
  2233. - </div>
  2234. -
  2235. - <!-- 分类快捷入口 -->
  2236. - <div class="section">
  2237. - <div class="category-grid">
  2238. - <div class="category-item">
  2239. - <div class="category-icon">
  2240. - <i class="iconfont icon-hot"></i>
  2241. - </div>
  2242. - <div class="category-name">热血</div>
  2243. - </div>
  2244. - <div class="category-item">
  2245. - <div class="category-icon">
  2246. - <i class="iconfont icon-love"></i>
  2247. - </div>
  2248. - <div class="category-name">恋爱</div>
  2249. - </div>
  2250. - <div class="category-item">
  2251. - <div class="category-icon">
  2252. - <i class="iconfont icon-fantasy"></i>
  2253. + <div id="home-page" class="page active">
  2254. + <div class="container">
  2255. + <!-- 轮播广告区 -->
  2256. + <div class="section">
  2257. + <div class="banner">
  2258. + <img src="assets/icon/doupo.jpeg">
  2259. + <div class="banner-dots">
  2260. + <div class="banner-dot active"></div>
  2261. + <div class="banner-dot"></div>
  2262. + <div class="banner-dot"></div>
  2263. + </div>
  2264. </div>
  2265. - <div class="category-name">玄幻</div>
  2266. </div>
  2267. - <div class="category-item">
  2268. - <div class="category-icon">
  2269. - <i class="iconfont icon-school"></i>
  2270. - </div>
  2271. - <div class="category-name">校园</div>
  2272. - </div>
  2273. - </div>
  2274. - </div>
  2275. - <!-- 每日更新 -->
  2276. - <div class="section">
  2277. - <div class="section-header">
  2278. - <h2 class="section-title">每日更新</h2>
  2279. - <a href="#" class="section-more">更多 ></a>
  2280. - </div>
  2281. - <div class="comic-list">
  2282. - <div class="comic-item" data-comic-id="1">
  2283. - <div class="comic-cover">
  2284. -
  2285. - <div class="comic-vip">VIP</div>
  2286. - </div>
  2287. - <div class="comic-info">
  2288. - <div class="comic-title">斗破苍穹</div>
  2289. - <div class="comic-author">作者: 天蚕土豆</div>
  2290. + <!-- 分类快捷入口 -->
  2291. + <div class="section">
  2292. + <div class="category-grid">
  2293. + <div class="category-item">
  2294. + <div class="category-icon">
  2295. + <i class="iconfont icon-hot"></i>
  2296. + </div>
  2297. + <div class="category-name">热血</div>
  2298. + </div>
  2299. + <div class="category-item">
  2300. + <div class="category-icon">
  2301. + <i class="iconfont icon-love"></i>
  2302. + </div>
  2303. + <div class="category-name">恋爱</div>
  2304. + </div>
  2305. + <div class="category-item">
  2306. + <div class="category-icon">
  2307. + <i class="iconfont icon-fantasy"></i>
  2308. + </div>
  2309. + <div class="category-name">玄幻</div>
  2310. + </div>
  2311. + <div class="category-item">
  2312. + <div class="category-icon">
  2313. + <i class="iconfont icon-school"></i>
  2314. + </div>
  2315. + <div class="category-name">校园</div>
  2316. + </div>
  2317. </div>
  2318. </div>
  2319. - <div class="comic-item" data-comic-id="2">
  2320. - <div class="comic-cover">
  2321. -
  2322. - </div>
  2323. - <div class="comic-info">
  2324. - <div class="comic-title">一人之下</div>
  2325. - <div class="comic-author">作者: 米二</div>
  2326. - </div>
  2327. - </div>
  2328. - <div class="comic-item" data-comic-id="3">
  2329. - <div class="comic-cover">
  2330. -
  2331. - <div class="comic-vip">VIP</div>
  2332. - </div>
  2333. - <div class="comic-info">
  2334. - <div class="comic-title">狐妖小红娘</div>
  2335. - <div class="comic-author">作者: 小新</div>
  2336. - </div>
  2337. - </div>
  2338. - </div>
  2339. - </div>
  2340. - <!-- 热门推荐 -->
  2341. - <div class="section">
  2342. - <div class="section-header">
  2343. - <h2 class="section-title">热门推荐</h2>
  2344. - <a href="#" class="section-more">更多 ></a>
  2345. - </div>
  2346. - <div class="comic-list">
  2347. - <div class="comic-item" data-comic-id="4">
  2348. - <div class="comic-cover">
  2349. + <!-- 每日更新 -->
  2350. + <div class="section">
  2351. + <div class="section-header">
  2352. + <h2 class="section-title">每日更新</h2>
  2353. + <a href="#" class="section-more">更多 ></a>
  2354. + </div>
  2355. + <div class="comic-list">
  2356. + <div class="comic-item" data-comic-id="1">
  2357. + <div class="comic-cover">
  2358. + <img src="assets/icon/doupo.jpeg" alt="漫画封面">
  2359. + <div class="comic-vip">VIP</div>
  2360. + </div>
  2361. + <div class="comic-info">
  2362. + <div class="comic-title">斗破苍穹</div>
  2363. + <div class="comic-author">作者: 天蚕土豆</div>
  2364. + </div>
  2365. + </div>
  2366. - </div>
  2367. - <div class="comic-info">
  2368. - <div class="comic-title">全职高手</div>
  2369. - <div class="comic-author">作者: 蝴蝶蓝</div>
  2370. + <div class="comic-item" data-comic-id="2">
  2371. + <div class="comic-cover">
  2372. + <img src="assets/icon/yiren.jpeg" alt="漫画封面">
  2373. + </div>
  2374. + <div class="comic-info">
  2375. + <div class="comic-title">一人之下</div>
  2376. + <div class="comic-author">作者: 米二</div>
  2377. + </div>
  2378. + </div>
  2379. + <div class="comic-item" data-comic-id="3">
  2380. + <div class="comic-cover">
  2381. + <img src="assets/icon/huyao.jpeg" alt="漫画封面">
  2382. + <div class="comic-vip">VIP</div>
  2383. + </div>
  2384. + <div class="comic-info">
  2385. + <div class="comic-title">狐妖小红娘</div>
  2386. + <div class="comic-author">作者: 小新</div>
  2387. + </div>
  2388. + </div>
  2389. </div>
  2390. </div>
  2391. - <div class="comic-item" data-comic-id="5">
  2392. - <div class="comic-cover">
  2393. -
  2394. - <div class="comic-vip">VIP</div>
  2395. - </div>
  2396. - <div class="comic-info">
  2397. - <div class="comic-title">斗罗大陆</div>
  2398. - <div class="comic-author">作者: 唐家三少</div>
  2399. - </div>
  2400. - </div>
  2401. - <div class="comic-item" data-comic-id="6">
  2402. - <div class="comic-cover">
  2403. -
  2404. - </div>
  2405. - <div class="comic-info">
  2406. - <div class="comic-title">镇魂街</div>
  2407. - <div class="comic-author">作者: 许辰</div>
  2408. +
  2409. + <!-- 热门推荐 -->
  2410. + <div class="section">
  2411. + <div class="section-header">
  2412. + <h2 class="section-title">热门推荐</h2>
  2413. + <a href="#" class="section-more">更多 ></a>
  2414. + </div>
  2415. + <div class="comic-list">
  2416. + <div class="comic-item" data-comic-id="4">
  2417. + <div class="comic-cover">
  2418. + <img src="assets/icon/quanzhi.jpeg" alt="漫画封面">
  2419. + </div>
  2420. + <div class="comic-info">
  2421. + <div class="comic-title">全职高手</div>
  2422. + <div class="comic-author">作者: 蝴蝶蓝</div>
  2423. + </div>
  2424. + </div>
  2425. + <div class="comic-item" data-comic-id="5">
  2426. + <div class="comic-cover">
  2427. + <img src="assets/icon/douluo.jpeg" alt="漫画封面">
  2428. + <div class="comic-vip">VIP</div>
  2429. + </div>
  2430. + <div class="comic-info">
  2431. + <div class="comic-title">斗罗大陆</div>
  2432. + <div class="comic-author">作者: 唐家三少</div>
  2433. + </div>
  2434. + </div>
  2435. + <div class="comic-item" data-comic-id="6">
  2436. + <div class="comic-cover">
  2437. + <img src="assets/icon/zhenhun.jpeg" alt="漫画封面">
  2438. + </div>
  2439. + <div class="comic-info">
  2440. + <div class="comic-title">镇魂街</div>
  2441. + <div class="comic-author">作者: 许辰</div>
  2442. + </div>
  2443. + </div>
  2444. + <div class="comic-item" data-comic-id="7">
  2445. + <div class="comic-cover">
  2446. + <img src="assets/icon/riyue.jpeg" alt="漫画封面">
  2447. + </div>
  2448. + <div class="comic-info">
  2449. + <div class="comic-title">日月同错</div>
  2450. + <div class="comic-author">作者: 第年秒</div>
  2451. + </div>
  2452. + </div>
  2453. + <div class="comic-item" data-comic-id="8">
  2454. + <div class="comic-cover">
  2455. + <img src="assets/icon/xiedi.jpeg" alt="漫画封面">
  2456. + </div>
  2457. + <div class="comic-info">
  2458. + <div class="comic-title">我为邪帝</div>
  2459. + <div class="comic-author">作者: 时代漫王</div>
  2460. + </div>
  2461. + </div>
  2462. + <div class="comic-item" data-comic-id="9">
  2463. + <div class="comic-cover">
  2464. + <img src="assets/icon/shaoson.jpeg" alt="漫画封面">
  2465. + </div>
  2466. + <div class="comic-info">
  2467. + <div class="comic-title">绍宋</div>
  2468. + <div class="comic-author">作者: 李晓楠</div>
  2469. + </div>
  2470. + </div>
  2471. + <div class="comic-item" data-comic-id="10">
  2472. + <div class="comic-cover">
  2473. + <img src="assets/icon/mohuang.jpeg" alt="漫画封面">
  2474. + </div>
  2475. + <div class="comic-info">
  2476. + <div class="comic-title">魔皇大管家</div>
  2477. + <div class="comic-author">作者: 夜枭</div>
  2478. + </div>
  2479. + </div>
  2480. + <div class="comic-item" data-comic-id="11">
  2481. + <div class="comic-cover">
  2482. + <img src="assets/icon/fanpai.jpeg" alt="漫画封面">
  2483. + </div>
  2484. + <div class="comic-info">
  2485. + <div class="comic-title">我!天命大反派</div>
  2486. + <div class="comic-author">作者: 天命反派</div>
  2487. + </div>
  2488. + </div>
  2489. + <div class="comic-item" data-comic-id="12">
  2490. + <div class="comic-cover">
  2491. + <img src="assets/icon/dianju.jpeg" alt="漫画封面">
  2492. + </div>
  2493. + <div class="comic-info">
  2494. + <div class="comic-title">电锯人</div>
  2495. + <div class="comic-author">作者: 藤本树</div>
  2496. + </div>
  2497. + </div>
  2498. </div>
  2499. </div>
  2500. </div>
  2501. </div>
  2502. - </div>
  2503. -</div>
  2504. -</ion-content>
  2505. +
  2506. +</ion-content>
  2507. \ No newline at end of file
  2508. diff --git a/src/app/tab2/tab2.page.html b/src/app/tab2/tab2.page.html
  2509. index 90ddf32..7afa26e 100644
  2510. --- a/src/app/tab2/tab2.page.html
  2511. +++ b/src/app/tab2/tab2.page.html
  2512. @@ -1,117 +1,36 @@
  2513. <ion-content [fullscreen]="true">
  2514. - <div class="container">
  2515. - <!-- 顶部导航栏 -->
  2516. - <div class="top-nav">
  2517. - <button class="back-btn">
  2518. - <i class="vant-icon vant-icon-arrow-left"></i>
  2519. - </button>
  2520. - <div class="nav-title">排行榜</div>
  2521. - <button class="search-btn">
  2522. - <i class="vant-icon vant-icon-search"></i>
  2523. - </button>
  2524. - </div>
  2525. -
  2526. - <!-- 榜单分类区 -->
  2527. - <div class="category-tabs">
  2528. - <div class="tab-item active">热门动漫</div>
  2529. - <div class="tab-item">最新更新</div>
  2530. - <div class="tab-item">热血漫画</div>
  2531. - <div class="tab-item">恋爱漫画</div>
  2532. - <div class="tab-item">玄幻奇幻</div>
  2533. - <div class="tab-item">悬疑推理</div>
  2534. - <div class="tab-item">搞笑日常</div>
  2535. - </div>
  2536. -
  2537. - <!-- 漫画展示区 -->
  2538. - <div class="comic-list">
  2539. - <!-- 漫画卡片1 -->
  2540. - <div class="comic-card">
  2541. - <div class="rank-badge top1">1</div>
  2542. - <img src="https://via.placeholder.com/100x130/ff9999/ffffff?text=漫画1" alt="漫画封面" class="comic-cover">
  2543. - <div class="comic-info">
  2544. - <div>
  2545. - <h3 class="comic-title">斗罗大陆</h3>
  2546. - <p class="comic-author">作者:唐家三少</p>
  2547. - <p class="comic-update">更新至第320章</p>
  2548. - </div>
  2549. - <div class="comic-popularity">
  2550. - <i class="vant-icon vant-icon-fire-o popularity-icon"></i>
  2551. - <span>月平均热度 20546</span>
  2552. - </div>
  2553. - </div>
  2554. - </div>
  2555. -
  2556. - <!-- 漫画卡片2 -->
  2557. - <div class="comic-card">
  2558. - <div class="rank-badge top3">2</div>
  2559. - <img src="https://via.placeholder.com/100x130/99ccff/ffffff?text=漫画2" alt="漫画封面" class="comic-cover">
  2560. - <div class="comic-info">
  2561. - <div>
  2562. - <h3 class="comic-title">一人之下</h3>
  2563. - <p class="comic-author">作者:米二</p>
  2564. - <p class="comic-update">更新至第568章</p>
  2565. - </div>
  2566. - <div class="comic-popularity">
  2567. - <i class="vant-icon vant-icon-fire-o popularity-icon"></i>
  2568. - <span>月平均热度 19872</span>
  2569. - </div>
  2570. - </div>
  2571. - </div>
  2572. -
  2573. - <!-- 漫画卡片3 -->
  2574. - <div class="comic-card">
  2575. - <div class="rank-badge top3">3</div>
  2576. - <img src="https://via.placeholder.com/100x130/99ff99/ffffff?text=漫画3" alt="漫画封面" class="comic-cover">
  2577. - <div class="comic-info">
  2578. - <div>
  2579. - <h3 class="comic-title">狐妖小红娘</h3>
  2580. - <p class="comic-author">作者:小新</p>
  2581. - <p class="comic-update">更新至第112章</p>
  2582. - </div>
  2583. - <div class="comic-popularity">
  2584. - <i class="vant-icon vant-icon-fire-o popularity-icon"></i>
  2585. - <span>月平均热度 18765</span>
  2586. - </div>
  2587. - </div>
  2588. - </div>
  2589. -
  2590. - <!-- 漫画卡片4 -->
  2591. - <div class="comic-card">
  2592. - <div class="rank-badge">4</div>
  2593. - <img src="https://via.placeholder.com/100x130/ffcc99/ffffff?text=漫画4" alt="漫画封面" class="comic-cover">
  2594. - <div class="comic-info">
  2595. - <div>
  2596. - <h3 class="comic-title">全职高手</h3>
  2597. - <p class="comic-author">作者:蝴蝶蓝</p>
  2598. - <p class="comic-update">更新至第176章</p>
  2599. - </div>
  2600. - <div class="comic-popularity">
  2601. - <i class="vant-icon vant-icon-fire-o popularity-icon"></i>
  2602. - <span>月平均热度 17614</span>
  2603. - </div>
  2604. - </div>
  2605. - </div>
  2606. -
  2607. - <!-- 漫画卡片5 -->
  2608. - <div class="comic-card">
  2609. - <div class="rank-badge">5</div>
  2610. - <img src="https://via.placeholder.com/100x130/ccccff/ffffff?text=漫画5" alt="漫画封面" class="comic-cover">
  2611. - <div class="comic-info">
  2612. - <div>
  2613. - <h3 class="comic-title">镇魂街</h3>
  2614. - <p class="comic-author">作者:许辰</p>
  2615. - <p class="comic-update">更新至第309章</p>
  2616. - </div>
  2617. - <div class="comic-popularity">
  2618. - <i class="vant-icon vant-icon-fire-o popularity-icon"></i>
  2619. - <span>月平均热度 16543</span>
  2620. - </div>
  2621. - </div>
  2622. - </div>
  2623. - </div>
  2624. -
  2625. - <!-- 底部导航栏 -->
  2626. -
  2627. -</div>
  2628. + <ion-card class="artist-card">
  2629. + <!-- 卡片头部(头像 + 名称) -->
  2630. + <div class="card-header">
  2631. + <img
  2632. + src="assets/icon/hoshino.jpeg"
  2633. + alt="星野 荐"
  2634. + class="artist-avatar"
  2635. + (error)="handleImageError($event)"
  2636. + />
  2637. + <h2>星野 荐</h2>
  2638. + <p class="subtitle">漫画推荐师 · 治愈系作者</p>
  2639. + </div>
  2640. +
  2641. + <!-- 描述内容 -->
  2642. + <ion-card-content>
  2643. + <p>
  2644. + 擅长挖掘冷门神作,能用「漫画处方」精准匹配你的灵魂需求。
  2645. + 代表作《星辰图书咖啡馆》隐藏无数彩蛋!
  2646. + </p>
  2647. + </ion-card-content>
  2648. +
  2649. + <!-- 底部按钮 -->
  2650. + <ion-button
  2651. + expand="block"
  2652. + fill="solid"
  2653. + color="primary"
  2654. + class="info-button"
  2655. + (click)="openConsult()"
  2656. + >
  2657. + <ion-icon name="newspaper-outline" slot="start"></ion-icon>
  2658. + 查看资讯
  2659. + </ion-button>
  2660. +</ion-card>
  2661. </ion-content>
  2662. diff --git a/src/app/tab2/tab2.page.scss b/src/app/tab2/tab2.page.scss
  2663. index 33ec9a2..f92c04d 100644
  2664. --- a/src/app/tab2/tab2.page.scss
  2665. +++ b/src/app/tab2/tab2.page.scss
  2666. @@ -1,205 +1,45 @@
  2667. -* {
  2668. - margin: 0;
  2669. - padding: 0;
  2670. - box-sizing: border-box;
  2671. - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  2672. -}
  2673. -
  2674. -body {
  2675. - background-color: #f5f5f5;
  2676. - color: #333;
  2677. - font-size: 14px;
  2678. - line-height: 1.5;
  2679. -}
  2680. -
  2681. -.container {
  2682. - max-width: 100%;
  2683. - margin: 0 auto;
  2684. - padding-bottom: 60px;
  2685. -}
  2686. -
  2687. -/* 顶部导航栏 */
  2688. -.top-nav {
  2689. - position: sticky;
  2690. - top: 0;
  2691. - z-index: 100;
  2692. - display: flex;
  2693. - align-items: center;
  2694. - justify-content: space-between;
  2695. - padding: 10px 15px;
  2696. - background-color: #fff;
  2697. - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
  2698. -}
  2699. -
  2700. -.nav-title {
  2701. - font-size: 18px;
  2702. - font-weight: 600;
  2703. - position: absolute;
  2704. - left: 50%;
  2705. - transform: translateX(-50%);
  2706. -}
  2707. -
  2708. -.back-btn {
  2709. - font-size: 20px;
  2710. - color: #666;
  2711. - background: none;
  2712. - border: none;
  2713. - padding: 5px;
  2714. -}
  2715. -
  2716. -.search-btn {
  2717. - font-size: 20px;
  2718. - color: #666;
  2719. - background: none;
  2720. - border: none;
  2721. - padding: 5px;
  2722. -}
  2723. -
  2724. -/* 榜单分类区 */
  2725. -.category-tabs {
  2726. - display: flex;
  2727. - overflow-x: auto;
  2728. - padding: 10px 15px;
  2729. - background-color: #fff;
  2730. - white-space: nowrap;
  2731. - scrollbar-width: none;
  2732. -}
  2733. -
  2734. -.category-tabs::-webkit-scrollbar {
  2735. - display: none;
  2736. -}
  2737. -
  2738. -.tab-item {
  2739. - padding: 8px 15px;
  2740. - margin-right: 10px;
  2741. - border-radius: 15px;
  2742. - font-size: 14px;
  2743. - background-color: #f5f5f5;
  2744. - color: #666;
  2745. - flex-shrink: 0;
  2746. -}
  2747. -
  2748. -.tab-item.active {
  2749. - background-color: #ff4e4e;
  2750. - color: #fff;
  2751. -}
  2752. -
  2753. -/* 漫画展示区 */
  2754. -.comic-list {
  2755. - padding: 15px;
  2756. -}
  2757. -
  2758. -.comic-card {
  2759. - display: flex;
  2760. - margin-bottom: 15px;
  2761. - background-color: #fff;
  2762. - border-radius: 8px;
  2763. - overflow: hidden;
  2764. - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  2765. - position: relative;
  2766. -}
  2767. -
  2768. -.rank-badge {
  2769. - position: absolute;
  2770. - left: 0;
  2771. - top: 0;
  2772. - width: 30px;
  2773. - height: 30px;
  2774. - background-color: #ff4e4e;
  2775. - color: #fff;
  2776. - display: flex;
  2777. - align-items: center;
  2778. - justify-content: center;
  2779. - font-weight: bold;
  2780. - border-bottom-right-radius: 8px;
  2781. - z-index: 1;
  2782. -}
  2783. -
  2784. -.rank-badge.top3 {
  2785. - background-color: #ff9e00;
  2786. -}
  2787. -
  2788. -.rank-badge.top1 {
  2789. - background-color: #ff4e4e;
  2790. -}
  2791. -
  2792. -.comic-cover {
  2793. - width: 100px;
  2794. - height: 130px;
  2795. - object-fit: cover;
  2796. - flex-shrink: 0;
  2797. -}
  2798. -
  2799. -.comic-info {
  2800. - flex: 1;
  2801. - padding: 12px;
  2802. - display: flex;
  2803. - flex-direction: column;
  2804. - justify-content: space-between;
  2805. -}
  2806. -
  2807. -.comic-title {
  2808. - font-size: 16px;
  2809. - font-weight: 600;
  2810. - margin-bottom: 5px;
  2811. - display: -webkit-box;
  2812. - -webkit-line-clamp: 1;
  2813. - -webkit-box-orient: vertical;
  2814. - overflow: hidden;
  2815. -}
  2816. -
  2817. -.comic-author {
  2818. - font-size: 12px;
  2819. - color: #999;
  2820. - margin-bottom: 8px;
  2821. -}
  2822. -
  2823. -.comic-update {
  2824. - font-size: 12px;
  2825. - color: #ff4e4e;
  2826. - margin-bottom: 8px;
  2827. -}
  2828. -
  2829. -.comic-popularity {
  2830. - display: flex;
  2831. - align-items: center;
  2832. - font-size: 12px;
  2833. - color: #999;
  2834. -}
  2835. -
  2836. -.popularity-icon {
  2837. - margin-right: 5px;
  2838. - color: #ff9e00;
  2839. -}
  2840. -
  2841. -/* 底部导航栏 */
  2842. -.bottom-nav {
  2843. - position: fixed;
  2844. - bottom: 0;
  2845. - left: 0;
  2846. - right: 0;
  2847. - display: flex;
  2848. - justify-content: space-around;
  2849. - padding: 10px 0;
  2850. - background-color: #fff;
  2851. - box-shadow: 0 -1px 4px rgba(0, 0, 0, 0.1);
  2852. - z-index: 100;
  2853. -}
  2854. -
  2855. -.nav-item {
  2856. - display: flex;
  2857. - flex-direction: column;
  2858. - align-items: center;
  2859. - color: #666;
  2860. - text-decoration: none;
  2861. - font-size: 12px;
  2862. -}
  2863. -
  2864. -.nav-item.active {
  2865. - color: #ff4e4e;
  2866. -}
  2867. -
  2868. -.nav-icon {
  2869. - font-size: 20px;
  2870. - margin-bottom: 3px;
  2871. +/* hoshino-card.component.scss */
  2872. +.artist-card {
  2873. + border-radius: 16px;
  2874. + overflow: hidden;
  2875. + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  2876. + margin: 16px;
  2877. + text-align: center;
  2878. +
  2879. + .card-header {
  2880. + padding: 20px 0 10px;
  2881. + background: linear-gradient(135deg, #f5f7fa 0%, #e4e8f0 100%);
  2882. +
  2883. + .artist-avatar {
  2884. + width: 300px;
  2885. + height: 300px;
  2886. + border-radius: 50%;
  2887. + object-fit: cover;
  2888. + border: 3px solid white;
  2889. + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  2890. + }
  2891. +
  2892. + h2 {
  2893. + margin: 8px 0 0;
  2894. + color: #2c3e50;
  2895. + font-weight: bold;
  2896. + }
  2897. +
  2898. + .subtitle {
  2899. + margin: 4px 0;
  2900. + color: #7f8c8d;
  2901. + font-size: 14px;
  2902. + }
  2903. + }
  2904. +
  2905. + ion-card-content {
  2906. + color: #34495e;
  2907. + line-height: 1.6;
  2908. + padding: 16px 20px;
  2909. + }
  2910. +
  2911. + .info-button {
  2912. + --border-radius: 0 0 16px 16px;
  2913. + margin-top: 0;
  2914. + }
  2915. }
  2916. \ No newline at end of file
  2917. diff --git a/src/app/tab2/tab2.page.ts b/src/app/tab2/tab2.page.ts
  2918. index 520c45b..55e9091 100644
  2919. --- a/src/app/tab2/tab2.page.ts
  2920. +++ b/src/app/tab2/tab2.page.ts
  2921. @@ -1,5 +1,9 @@
  2922. import { Component } from '@angular/core';
  2923. -
  2924. +import { ModalController } from '@ionic/angular/standalone';
  2925. +// 引用fmode-ng智能体组件
  2926. +import { ChatPanelOptions, FmodeChat, FmodeChatMessage, openChatPanelModal } from 'fmode-ng';
  2927. +import Parse from "parse";
  2928. +import { CloudObject, CloudQuery, CloudUser } from 'src/lib/ncloud';
  2929. @Component({
  2930. selector: 'app-tab2',
  2931. templateUrl: 'tab2.page.html',
  2932. @@ -7,7 +11,173 @@ import { Component } from '@angular/core';
  2933. standalone: false,
  2934. })
  2935. export class Tab2Page {
  2936. + // 处理图片加载失败
  2937. + handleImageError(event: Event) {
  2938. + const img = event.target as HTMLImageElement;
  2939. + img.src = 'assets/icon/hoshino.jpeg'; // 备用图片
  2940. + }
  2941. +
  2942. + // 处理按钮点击
  2943. + openDetails() {
  2944. + console.log('查看资讯按钮被点击');
  2945. + // 实际项目中可以跳转页面:
  2946. + // this.router.navigate(['/details']);
  2947. + }
  2948. + openConsult(chatId?:string){
  2949. + localStorage.setItem("company","E4KpGvTEto")
  2950. + let options:ChatPanelOptions = {
  2951. + roleId:"2DXJkRsjXK", // 预设,无需更改
  2952. + // chatId:chatId, // 若存在,则恢复会话。若不存在,则开启新会话
  2953. + onChatInit:(chat:FmodeChat)=>{
  2954. + console.log("onChatInit");
  2955. + console.log("Chat类",chat);
  2956. + console.log("预设角色",chat.role);
  2957. + // 角色名称
  2958. + chat.role.set("name","星野荐");
  2959. + // 角色称号
  2960. + chat.role.set("title","漫画家");
  2961. + // 角色描述
  2962. + chat.role.set("desc","个人作品画风清新,但隐藏“推荐彩蛋”,星野荐,年龄26岁");
  2963. + // 角色标签
  2964. + chat.role.set("tags",['跑步', '动感单车']);
  2965. + // 角色头像
  2966. + chat.role.set("avatar","assets/icon/hoshino.jpeg")
  2967. + // 角色提示词
  2968. + chat.role.set("prompt",`
  2969. +# 角色设定
  2970. +性别:男
  2971. +
  2972. +年龄:32岁
  2973. +
  2974. +国籍:日本(活跃于国际漫画平台)
  2975. +
  2976. +职业:
  2977. +
  2978. +漫画家(创作小众治愈系作品)
  2979. +
  2980. +“漫画考古学家”(专注挖掘冷门神作)
  2981. +
  2982. +线上漫画推荐专栏主理人
  2983. +发型:微卷的深棕色短发,总有一撮呆毛翘起。
  2984. +
  2985. +服饰:爱穿宽松的条纹衬衫+工装裤,胸前挂着一副老式放大镜(用来“鉴定漫画细节”)。
  2986. +
  2987. +标志性道具:
  2988. +
  2989. +手捧一本封面夸张的漫画,书脊贴满彩色标签。
  2990. +
  2991. +背包上别满各国漫画角色的徽章。
  2992. +
  2993. +表情:热情洋溢的笑容,眼神专注时会在镜片后反光。
  2994. +
  2995. +
  2996. +`);
  2997. + // 对话灵感分类
  2998. + let promptCates = [
  2999. + {
  3000. + "img": "assets/icon/leixing.jpeg",
  3001. + "name": "类型"
  3002. + },
  3003. + {
  3004. + "img": "assets/icon/fengge.jpeg",
  3005. + "name": "风格"
  3006. + },
  3007. + {
  3008. + "img": "assets/icon/zhuti.jpeg",
  3009. + "name": "主题"
  3010. + }
  3011. + ]
  3012. + setTimeout(() => {
  3013. + chat.role.set("promptCates",promptCates)
  3014. + }, 500);
  3015. + // 对话灵感列表
  3016. + let promptList = [
  3017. + {
  3018. + cate:"类型",img:"/assets/icon/leixing.jpg",
  3019. + messageList:[
  3020. + "我喜欢热血战斗类的漫画,比如《龙珠》《火影忍者》,有什么类似的推荐吗?",
  3021. + "有没有好看的悬疑推理漫画,剧情烧脑的那种?",
  3022. + "最近想看看轻松搞笑的日常漫画,能推荐一些吗?",
  3023. + "对科幻机甲类的漫画感兴趣,类似《高达》或者《攻壳机动队》这样的有推荐吗?",
  3024. + "有没有黑暗奇幻风格的漫画,比如《剑风传奇》这种?"
  3025. + ]
  3026. + },
  3027. + {
  3028. + cate:"风格",img:"/assets/icon/fengge.jpg",
  3029. + messageList:[
  3030. + "我喜欢画风细腻、人物美型的漫画,比如《CLAMP》的作品,有类似的推荐吗?",
  3031. + "有没有画风独特、辨识度高的漫画,比如《JOJO的奇妙冒险》那种?",
  3032. + "喜欢复古手绘风格的漫画,类似《浪客行》这样的,能推荐一些吗?",
  3033. + "有没有色彩鲜艳、视觉冲击力强的漫画,比如《死神》早期的风格?",
  3034. + "偏好写实画风的漫画,类似《寄生兽》这样的,有什么推荐?"
  3035. + ]
  3036. + },
  3037. + {
  3038. + cate:"主题",img:"/assets/icon/zhuti.jpg",
  3039. + messageList: [
  3040. + "有没有主角成长线很精彩的漫画,比如从弱小变强的那种?",
  3041. + "想看看关于‘复仇’主题的漫画,剧情要够狠够刺激的!",
  3042. + "有没有讲述友情、团队合作的漫画,类似《海贼王》这种?",
  3043. + "对‘时间循环’或者‘平行世界’设定的漫画感兴趣,有什么推荐?",
  3044. + "有没有探讨人性、社会问题的深刻漫画,类似《死亡笔记》或《怪物》?"
  3045. + ]
  3046. + },
  3047. + ]
  3048. + let ChatPrompt = Parse.Object.extend("ChatPrompt");
  3049. + setTimeout(() => {
  3050. + chat.promptList = promptList.map(item=>{
  3051. + let prompt = new ChatPrompt();
  3052. + prompt.set(item);
  3053. + prompt.img = item.img;
  3054. + return prompt;
  3055. + })
  3056. + }, 500);
  3057. +
  3058. + // 功能按钮区域预设
  3059. + chat.leftButtons = [
  3060. + { // 提示 当角色配置预设提示词时 显示
  3061. + title:"话题灵感", // 按钮标题
  3062. + showTitle:true, // 是否显示标题文字
  3063. + icon:"color-wand-outline", // 标题icon图标
  3064. + onClick:()=>{ // 按钮点击事件
  3065. + chat.isPromptModalOpen = true
  3066. + },
  3067. + show:()=>{ // 按钮显示条件
  3068. + return chat?.promptList?.length // 存在话题提示词时显示
  3069. + }
  3070. + },
  3071. + ]
  3072. +
  3073. + },
  3074. + onMessage:(chat:FmodeChat,message:FmodeChatMessage)=>{
  3075. + console.log("onMessage",message)
  3076. + let content:any = message?.content
  3077. + if(typeof content == "string"){
  3078. + // 根据阶段标记判断下一步处理过程
  3079. + if (content.includes('[导诊完成]')) {
  3080. + // 进入问诊环节
  3081. + console.log('进入问诊环节');
  3082. + } else if (content.includes('[问诊完成]')) {
  3083. + // 进入检查环节
  3084. + console.log('进入检查环节');
  3085. + } else if (content.includes('[检查完成]')) {
  3086. + // 进入诊断与处方环节
  3087. + console.log('进入诊断与处方环节');
  3088. + } else if (content.includes('[处方完成]')) {
  3089. + // 结束会话或其他逻辑
  3090. + console.log('结束会话');
  3091. + }
  3092. + }
  3093. + },
  3094. + onChatSaved:(chat:FmodeChat)=>{
  3095. + // chat?.chatSession?.id 本次会话的 chatId
  3096. + console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
  3097. + }
  3098. + }
  3099. + openChatPanelModal(this.modalCtrl,options)
  3100. + }
  3101. +
  3102. + constructor(private modalCtrl:ModalController,) {}
  3103. - constructor() {}
  3104. }
  3105. diff --git a/src/app/tab3/tab3.page.html b/src/app/tab3/tab3.page.html
  3106. index 089acda..a9005a0 100644
  3107. --- a/src/app/tab3/tab3.page.html
  3108. +++ b/src/app/tab3/tab3.page.html
  3109. @@ -105,45 +105,47 @@
  3110. <body>
  3111. <!-- 顶部信息展示区 -->
  3112. - <div class="top-info">
  3113. - <div class="avatar" onclick="changeAvatar()"></div>
  3114. - <div class="user-info">
  3115. - <div class="username">用户昵称</div>
  3116. - <div class="user-level">VIP 会员</div>
  3117. - </div>
  3118. - </div>
  3119. +
  3120. <!-- 功能模块区 -->
  3121. - <div class="function-module">
  3122. - <div class="module-item">
  3123. - <i class="fa-solid fa-coins"></i>
  3124. - <span>点券、阅点</span>
  3125. - </div>
  3126. - <div class="module-item">
  3127. - <i class="fa-solid fa-history"></i>
  3128. - <span>阅读记录</span>
  3129. - </div>
  3130. - <div class="module-item">
  3131. - <i class="fa-solid fa-book"></i>
  3132. - <span>书架</span>
  3133. - </div>
  3134. - <div class="module-item">
  3135. - <i class="fa-solid fa-bell"></i>
  3136. - <span>消息中心</span>
  3137. + <div id="profile-page" class="page">
  3138. + <div class="container">
  3139. + <div class="section" style="text-align: center; padding: 20px 0;">
  3140. + <div style="width: 80px; height: 80px; border-radius: 50%; background-color: #f0f0f0; display: inline-flex; align-items: center; justify-content: center; margin-bottom: 15px;">
  3141. + <i class="iconfont icon-user" style="font-size: 40px; color: #999;"></i>
  3142. + </div>
  3143. + <h2 style="font-size: 18px; margin-bottom: 10px;">点击登录</h2>
  3144. + <p style="font-size: 14px; color: #999; margin-bottom: 20px;">登录后查看我的收藏、历史记录等</p>
  3145. + <a href="#" style="display: inline-block; background-color: #ff4e33; color: white; padding: 8px 20px; border-radius: 20px; font-weight: bold;">立即登录</a>
  3146. + </div>
  3147. +
  3148. + <div class="section">
  3149. + <div style="background-color: white; border-radius: 8px; overflow: hidden;">
  3150. + <div style="padding: 15px; border-bottom: 1px solid #f0f0f0; display: flex; align-items: center; justify-content: space-between;">
  3151. + <div style="display: flex; align-items: center;">
  3152. + <i class="iconfont icon-collect" style="font-size: 20px; color: #ff4e33; margin-right: 10px;"></i>
  3153. + <span>我的收藏</span>
  3154. + </div>
  3155. + <i class="iconfont icon-arrow-right" style="font-size: 16px; color: #999;"></i>
  3156. + </div>
  3157. + <div style="padding: 15px; border-bottom: 1px solid #f0f0f0; display: flex; align-items: center; justify-content: space-between;">
  3158. + <div style="display: flex; align-items: center;">
  3159. + <i class="iconfont icon-history" style="font-size: 20px; color: #ff4e33; margin-right: 10px;"></i>
  3160. + <span>浏览历史</span>
  3161. + </div>
  3162. + <i class="iconfont icon-arrow-right" style="font-size: 16px; color: #999;"></i>
  3163. + </div>
  3164. + <div style="padding: 15px; display: flex; align-items: center; justify-content: space-between;">
  3165. + <div style="display: flex; align-items: center;">
  3166. + <i class="iconfont icon-setting" style="font-size: 20px; color: #ff4e33; margin-right: 10px;"></i>
  3167. + <span>设置</span>
  3168. + </div>
  3169. + <i class="iconfont icon-arrow-right" style="font-size: 16px; color: #999;"></i>
  3170. + </div>
  3171. + </div>
  3172. + </div>
  3173. + </div>
  3174. </div>
  3175. - <div class="module-item">
  3176. - <i class="fa-solid fa-gift"></i>
  3177. - <span>兑换中心</span>
  3178. - </div>
  3179. - <div class="module-item">
  3180. - <i class="fa-solid fa-gear"></i>
  3181. - <span>设置</span>
  3182. - </div>
  3183. - <div class="module-item">
  3184. - <i class="fa-solid fa-download"></i>
  3185. - <span>离线下载</span>
  3186. - </div>
  3187. - </div>
  3188. <!-- 其他信息展示区 -->
  3189. <div class="other-info">
  3190. @@ -158,4 +160,4 @@
  3191. }
  3192. </script>
  3193. </body>
  3194. -</ion-content>
  3195. +
  3196. diff --git a/src/app/tab3/tab3.page.scss b/src/app/tab3/tab3.page.scss
  3197. index e69de29..5001e1c 100644
  3198. --- a/src/app/tab3/tab3.page.scss
  3199. +++ b/src/app/tab3/tab3.page.scss
  3200. @@ -0,0 +1,45 @@
  3201. +/* hoshino-card.component.scss */
  3202. +.artist-card {
  3203. + border-radius: 16px;
  3204. + overflow: hidden;
  3205. + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  3206. + margin: 16px;
  3207. + text-align: center;
  3208. +
  3209. + .card-header {
  3210. + padding: 20px 0 10px;
  3211. + background: linear-gradient(135deg, #f5f7fa 0%, #e4e8f0 100%);
  3212. +
  3213. + .artist-avatar {
  3214. + width: 100px;
  3215. + height: 100px;
  3216. + border-radius: 50%;
  3217. + object-fit: cover;
  3218. + border: 3px solid white;
  3219. + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  3220. + }
  3221. +
  3222. + h2 {
  3223. + margin: 8px 0 0;
  3224. + color: #2c3e50;
  3225. + font-weight: bold;
  3226. + }
  3227. +
  3228. + .subtitle {
  3229. + margin: 4px 0;
  3230. + color: #7f8c8d;
  3231. + font-size: 14px;
  3232. + }
  3233. + }
  3234. +
  3235. + ion-card-content {
  3236. + color: #34495e;
  3237. + line-height: 1.6;
  3238. + padding: 16px 20px;
  3239. + }
  3240. +
  3241. + .info-button {
  3242. + --border-radius: 0 0 16px 16px;
  3243. + margin-top: 0;
  3244. + }
  3245. +}
  3246. \ No newline at end of file
  3247. diff --git a/src/app/tab3/tab3.page.ts b/src/app/tab3/tab3.page.ts
  3248. index 8c63559..353130b 100644
  3249. --- a/src/app/tab3/tab3.page.ts
  3250. +++ b/src/app/tab3/tab3.page.ts
  3251. @@ -7,6 +7,31 @@ import { Component } from '@angular/core';
  3252. standalone: false,
  3253. })
  3254. export class Tab3Page {
  3255. + // ... 现有代码 ...
  3256. +
  3257. + // 添加图片错误处理方法
  3258. + handleImageError(event: Event) {
  3259. + const imgElement = event.target as HTMLImageElement;
  3260. + console.error('图片加载失败:', imgElement.src);
  3261. +
  3262. + // 可选:设置默认图片
  3263. + // imgElement.src = 'assets/images/default.png';
  3264. +
  3265. + // 可选:隐藏图片
  3266. + // imgElement.style.display = 'none';
  3267. + }
  3268. +
  3269. + // 添加打开详情方法
  3270. + openDetails() {
  3271. + // 根据您的实际功能实现:
  3272. + console.log('打开详情');
  3273. +
  3274. + // 示例:导航到详情页
  3275. + // this.router.navigate(['/details']);
  3276. +
  3277. + // 示例:打开模态框
  3278. + // this.modalController.create({...}).present();
  3279. + }
  3280. constructor() {}
  3281. diff --git a/src/app/tabs/tabs.module.ts b/src/app/tabs/tabs.module.ts
  3282. index de4184a..3a94903 100644
  3283. --- a/src/app/tabs/tabs.module.ts
  3284. +++ b/src/app/tabs/tabs.module.ts
  3285. @@ -6,14 +6,19 @@ import { FormsModule } from '@angular/forms';
  3286. import { TabsPageRoutingModule } from './tabs-routing.module';
  3287. import { TabsPage } from './tabs.page';
  3288. +import { ModalController } from '@ionic/angular/standalone';
  3289. @NgModule({
  3290. +
  3291. imports: [
  3292. IonicModule,
  3293. CommonModule,
  3294. FormsModule,
  3295. TabsPageRoutingModule
  3296. ],
  3297. - declarations: [TabsPage]
  3298. + declarations: [TabsPage],
  3299. + providers:[
  3300. + ModalController,
  3301. + ]
  3302. })
  3303. export class TabsPageModule {}
  3304. diff --git a/src/app/tabs/tabs.page.html b/src/app/tabs/tabs.page.html
  3305. index 25e093d..1cda8c2 100644
  3306. --- a/src/app/tabs/tabs.page.html
  3307. +++ b/src/app/tabs/tabs.page.html
  3308. @@ -1,20 +1,41 @@
  3309. <ion-tabs>
  3310. - <ion-tab-bar slot="bottom">
  3311. - <ion-tab-button tab="tab1" href="/tabs/tab1">
  3312. - <ion-icon aria-hidden="true" name="home-outline"></ion-icon>
  3313. - <ion-label>首页</ion-label>
  3314. - </ion-tab-button>
  3315. -
  3316. - <ion-tab-button tab="tab2" href="/tabs/tab2">
  3317. - <ion-icon aria-hidden="true" name="podium-outline"></ion-icon>
  3318. - <ion-label>排行榜</ion-label>
  3319. - </ion-tab-button>
  3320. -
  3321. - <ion-tab-button tab="tab3" href="/tabs/tab3">
  3322. - <ion-icon aria-hidden="true" name="person-outline"></ion-icon>
  3323. - <ion-label>我的</ion-label>
  3324. - </ion-tab-button>
  3325. - </ion-tab-bar>
  3326. +  <ion-tab-bar slot="bottom">
  3327. +    <ion-tab-button tab="tab1" href="/tabs/tab1">
  3328. +      <ion-icon aria-hidden="true" name="home-outline"></ion-icon>
  3329. +      <ion-label>首页</ion-label>
  3330. +    </ion-tab-button>
  3331. +
  3332. +    <ion-tab-button tab="tab2" href="/tabs/tab2">
  3333. +      <ion-icon aria-hidden="true" name="podium-outline"></ion-icon>
  3334. +      <ion-label>AI问答</ion-label>
  3335. +    </ion-tab-button>
  3336. +
  3337. +    <ion-tab-button tab="tab3" href="/tabs/tab3">
  3338. +      <ion-icon aria-hidden="true" name="person-outline"></ion-icon>
  3339. +      <ion-label>我的</ion-label>
  3340. +    </ion-tab-button>
  3341. +  </ion-tab-bar>
  3342. </ion-tabs>
  3343. +
  3344. +<ion-tabs>
  3345. +
  3346. +  <ion-tab-bar slot="bottom">
  3347. +    <ion-tab-button tab="tab1" href="/tabs/tab1">
  3348. +      <ion-icon aria-hidden="true" name="home-outline"></ion-icon>
  3349. +      <ion-label>首页</ion-label>
  3350. +    </ion-tab-button>
  3351. +
  3352. +    <ion-tab-button tab="tab2" href="/tabs/tab2">
  3353. +      <ion-icon aria-hidden="true" name="podium-outline"></ion-icon>
  3354. +      <ion-label>AI问答</ion-label>
  3355. +    </ion-tab-button>
  3356. +
  3357. +    <ion-tab-button tab="tab3" href="/tabs/tab3">
  3358. +      <ion-icon aria-hidden="true" name="person-outline"></ion-icon>
  3359. +      <ion-label>我的</ion-label>
  3360. +    </ion-tab-button>
  3361. +  </ion-tab-bar>
  3362. +
  3363. +</ion-tabs>
  3364. \ No newline at end of file
  3365. diff --git a/src/assets/icon/dianju.jpeg b/src/assets/icon/dianju.jpeg
  3366. new file mode 100644
  3367. index 0000000..b642709
  3368. Binary files /dev/null and b/src/assets/icon/dianju.jpeg differ
  3369. diff --git a/src/assets/icon/douluo.jpeg b/src/assets/icon/douluo.jpeg
  3370. new file mode 100644
  3371. index 0000000..2a550ea
  3372. Binary files /dev/null and b/src/assets/icon/douluo.jpeg differ
  3373. diff --git a/src/assets/icon/doupo.jpeg b/src/assets/icon/doupo.jpeg
  3374. new file mode 100644
  3375. index 0000000..ee4a968
  3376. Binary files /dev/null and b/src/assets/icon/doupo.jpeg differ
  3377. diff --git a/src/assets/icon/fanpai.jpeg b/src/assets/icon/fanpai.jpeg
  3378. new file mode 100644
  3379. index 0000000..d6f21bb
  3380. Binary files /dev/null and b/src/assets/icon/fanpai.jpeg differ
  3381. diff --git a/src/assets/icon/fengge.jpeg b/src/assets/icon/fengge.jpeg
  3382. new file mode 100644
  3383. index 0000000..dac2d75
  3384. Binary files /dev/null and b/src/assets/icon/fengge.jpeg differ
  3385. diff --git a/src/assets/icon/hoshino.jpeg b/src/assets/icon/hoshino.jpeg
  3386. new file mode 100644
  3387. index 0000000..c957d51
  3388. Binary files /dev/null and b/src/assets/icon/hoshino.jpeg differ
  3389. diff --git a/src/assets/icon/huyao.jpeg b/src/assets/icon/huyao.jpeg
  3390. new file mode 100644
  3391. index 0000000..3791614
  3392. Binary files /dev/null and b/src/assets/icon/huyao.jpeg differ
  3393. diff --git a/src/assets/icon/leixing.jpeg b/src/assets/icon/leixing.jpeg
  3394. new file mode 100644
  3395. index 0000000..349fc9e
  3396. Binary files /dev/null and b/src/assets/icon/leixing.jpeg differ
  3397. diff --git a/src/assets/icon/mohuang.jpeg b/src/assets/icon/mohuang.jpeg
  3398. new file mode 100644
  3399. index 0000000..02f3bcf
  3400. Binary files /dev/null and b/src/assets/icon/mohuang.jpeg differ
  3401. diff --git a/src/assets/icon/quanzhi.jpeg b/src/assets/icon/quanzhi.jpeg
  3402. new file mode 100644
  3403. index 0000000..6dc545d
  3404. Binary files /dev/null and b/src/assets/icon/quanzhi.jpeg differ
  3405. diff --git a/src/assets/icon/riyue.jpeg b/src/assets/icon/riyue.jpeg
  3406. new file mode 100644
  3407. index 0000000..78f5923
  3408. Binary files /dev/null and b/src/assets/icon/riyue.jpeg differ
  3409. diff --git a/src/assets/icon/shaoson.jpeg b/src/assets/icon/shaoson.jpeg
  3410. new file mode 100644
  3411. index 0000000..a466a86
  3412. Binary files /dev/null and b/src/assets/icon/shaoson.jpeg differ
  3413. diff --git a/src/assets/icon/xiedi.jpeg b/src/assets/icon/xiedi.jpeg
  3414. new file mode 100644
  3415. index 0000000..7e83454
  3416. Binary files /dev/null and b/src/assets/icon/xiedi.jpeg differ
  3417. diff --git a/src/assets/icon/yiren.jpeg b/src/assets/icon/yiren.jpeg
  3418. new file mode 100644
  3419. index 0000000..54b6ab1
  3420. Binary files /dev/null and b/src/assets/icon/yiren.jpeg differ
  3421. diff --git a/src/assets/icon/zhenhun.jpeg b/src/assets/icon/zhenhun.jpeg
  3422. new file mode 100644
  3423. index 0000000..9020068
  3424. Binary files /dev/null and b/src/assets/icon/zhenhun.jpeg differ
  3425. diff --git a/src/assets/icon/zhuti.jpeg b/src/assets/icon/zhuti.jpeg
  3426. new file mode 100644
  3427. index 0000000..c8309f5
  3428. Binary files /dev/null and b/src/assets/icon/zhuti.jpeg differ
  3429. diff --git a/src/lib/import.data.ts b/src/lib/import.data.ts
  3430. new file mode 100644
  3431. index 0000000..0b2a5aa
  3432. --- /dev/null
  3433. +++ b/src/lib/import.data.ts
  3434. @@ -0,0 +1,152 @@
  3435. +import Parse from 'parse';
  3436. +
  3437. +// 定义玄幻漫画分类计划数据
  3438. +async function importFantasyComicPlan() {
  3439. +  try {
  3440. + await Parse.Cloud.run('testConnection');
  3441. + console.log('Parse server connected!');
  3442. +    // 初始化Parse
  3443. +    Parse.initialize("YOUR_APP_ID", "YOUR_JS_KEY");
  3444. +    Parse.serverURL = 'https://your.parse-server.com/parse';
  3445. +
  3446. +    // 1. 创建用户 (如果不存在)
  3447. +    const User = Parse.Object.extend("_User");
  3448. +    const creator = new User();
  3449. +    creator.set("username", "fantasy_artist");
  3450. +    creator.set("email", "fantasy@example.com");
  3451. +    creator.set("password", "fantasy123");
  3452. +    creator.set("emailVerified", true);
  3453. +   
  3454. +    const savedCreator = await creator.save(null, { useMasterKey: true });
  3455. +    console.log("创作者用户创建成功:", savedCreator.id);
  3456. +
  3457. +    // 2. 创建玄幻漫画计划
  3458. +    const ComicPlan = Parse.Object.extend("ComicPlan");
  3459. +    const fantasyPlan = new ComicPlan();
  3460. +   
  3461. +    fantasyPlan.set("planName", "玄幻修仙系列漫画");
  3462. +    fantasyPlan.set("description", "创作一部关于修仙世界的长篇玄幻漫画,包含修真体系、法宝、灵兽等元素");
  3463. +    fantasyPlan.set("coverImage", new Parse.File("cover.jpg", { base64: "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==" }));
  3464. +    fantasyPlan.set("totalTasks", 6);
  3465. +    fantasyPlan.set("completedTasks", 0);
  3466. +    fantasyPlan.set("status", "active");
  3467. +    fantasyPlan.set("difficulty", "advanced");
  3468. +    fantasyPlan.set("tags", ["fantasy", "cultivation", "action", "long-term"]);
  3469. +    fantasyPlan.set("creator", savedCreator);
  3470. +    fantasyPlan.set("dueDate", new Date(Date.now() + 90 * 24 * 60 * 60 * 1000)); // 90天后
  3471. +   
  3472. +    const savedPlan = await fantasyPlan.save();
  3473. +    console.log("玄幻漫画计划创建成功:", savedPlan.id);
  3474. +
  3475. +    // 3. 创建玄幻漫画任务
  3476. +    const ComicTask = Parse.Object.extend("ComicTask");
  3477. +   
  3478. +    // 任务1: 世界观设定
  3479. +    const task1 = new ComicTask();
  3480. +    task1.set("taskName", "世界观与修真体系设定");
  3481. +    task1.set("description", "设计修真等级体系(炼气、筑基、金丹等)、各大门派势力分布、主要地图");
  3482. +    task1.set("step", 1);
  3483. +    task1.set("type", "storyboard");
  3484. +    task1.set("isCompleted", false);
  3485. +    task1.set("priority", 5);
  3486. +    task1.set("estimatedHours", 20);
  3487. +    task1.set("plan", savedPlan);
  3488. +    task1.set("assignee", savedCreator);
  3489. +    task1.set("startDate", new Date());
  3490. +    task1.set("endDate", new Date(Date.now() + 7 * 24 * 60 * 60 * 1000)); // 7天后
  3491. +    await task1.save();
  3492. +   
  3493. +    // 任务2: 主角设计
  3494. +    const task2 = new ComicTask();
  3495. +    task2.set("taskName", "主角与主要角色设计");
  3496. +    task2.set("description", "设计主角形象、性格、成长路线,以及3-5个重要配角");
  3497. +    task2.set("step", 2);
  3498. +    task2.set("type", "sketch");
  3499. +    task2.set("referenceImages", [
  3500. +      new Parse.File("ref1.jpg", { base64: "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==" }),
  3501. +      new Parse.File("ref2.jpg", { base64: "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==" })
  3502. +    ]);
  3503. +    task2.set("isCompleted", false);
  3504. +    task2.set("priority", 4);
  3505. +    task2.set("estimatedHours", 15);
  3506. +    task2.set("plan", savedPlan);
  3507. +    task2.set("assignee", savedCreator);
  3508. +    task2.set("startDate", new Date(Date.now() + 5 * 24 * 60 * 60 * 1000));
  3509. +    task2.set("endDate", new Date(Date.now() + 12 * 24 * 60 * 60 * 1000));
  3510. +    await task2.save();
  3511. +   
  3512. +    // 任务3: 第一话分镜
  3513. +    const task3 = new ComicTask();
  3514. +    task3.set("taskName", "第一话分镜设计");
  3515. +    task3.set("description", "完成第一话(主角觉醒灵根,加入门派)的完整分镜");
  3516. +    task3.set("step", 3);
  3517. +    task3.set("type", "storyboard");
  3518. +    task3.set("isCompleted", false);
  3519. +    task3.set("priority", 5);
  3520. +    task3.set("estimatedHours", 25);
  3521. +    task3.set("plan", savedPlan);
  3522. +    task3.set("assignee", savedCreator);
  3523. +    task3.set("startDate", new Date(Date.now() + 10 * 24 * 60 * 60 * 1000));
  3524. +    task3.set("endDate", new Date(Date.now() + 20 * 24 * 60 * 60 * 1000));
  3525. +    await task3.save();
  3526. +   
  3527. +    // 任务4: 法宝与灵兽设计
  3528. +    const task4 = new ComicTask();
  3529. +    task4.set("taskName", "法宝与灵兽设计");
  3530. +    task4.set("description", "设计主角的初始法宝和伴生灵兽,以及3-5种常见法宝");
  3531. +    task4.set("step", 4);
  3532. +    task4.set("type", "sketch");
  3533. +    task4.set("isCompleted", false);
  3534. +    task4.set("priority", 3);
  3535. +    task4.set("estimatedHours", 12);
  3536. +    task4.set("plan", savedPlan);
  3537. +    task4.set("assignee", savedCreator);
  3538. +    task4.set("startDate", new Date(Date.now() + 15 * 24 * 60 * 60 * 1000));
  3539. +    task4.set("endDate", new Date(Date.now() + 22 * 24 * 60 * 60 * 1000));
  3540. +    await task4.save();
  3541. +   
  3542. +    // 任务5: 第一话线稿
  3543. +    const task5 = new ComicTask();
  3544. +    task5.set("taskName", "第一话线稿绘制");
  3545. +    task5.set("description", "根据分镜完成第一话的完整线稿");
  3546. +    task5.set("step", 5);
  3547. +    task5.set("type", "lineart");
  3548. +    task5.set("isCompleted", false);
  3549. +    task5.set("priority", 4);
  3550. +    task5.set("estimatedHours", 30);
  3551. +    task5.set("plan", savedPlan);
  3552. +    task5.set("assignee", savedCreator);
  3553. +    task5.set("startDate", new Date(Date.now() + 20 * 24 * 60 * 60 * 1000));
  3554. +    task5.set("endDate", new Date(Date.now() + 35 * 24 * 60 * 60 * 1000));
  3555. +    await task5.save();
  3556. +   
  3557. +    // 任务6: 第一话上色
  3558. +    const task6 = new ComicTask();
  3559. +    task6.set("taskName", "第一话上色与特效");
  3560. +    task6.set("description", "完成第一话的上色工作,添加修真特效(灵气、法宝光效等)");
  3561. +    task6.set("step", 6);
  3562. +    task6.set("type", "coloring");
  3563. +    task6.set("isCompleted", false);
  3564. +    task6.set("priority", 4);
  3565. +    task6.set("estimatedHours", 25);
  3566. +    task6.set("plan", savedPlan);
  3567. +    task6.set("assignee", savedCreator);
  3568. +    task6.set("startDate", new Date(Date.now() + 35 * 24 * 60 * 60 * 1000));
  3569. +    task6.set("endDate", new Date(Date.now() + 50 * 24 * 60 * 60 * 1000));
  3570. +    await task6.save();
  3571. +   
  3572. +    console.log("6个玄幻漫画任务已成功创建");
  3573. +   
  3574. +    // 更新计划的任务总数
  3575. +    savedPlan.set("totalTasks", 6);
  3576. +    await savedPlan.save();
  3577. +   
  3578. +    console.log("玄幻漫画分类计划导入完成!");
  3579. +   
  3580. +  } catch (error) {
  3581. +    console.error('Failed to connect to Parse server:', error);
  3582. +  }
  3583. +}
  3584. +
  3585. +// 执行导入
  3586. +importFantasyComicPlan();
  3587. \ No newline at end of file
  3588. diff --git a/src/lib/ncloud.ts b/src/lib/ncloud.ts
  3589. new file mode 100644
  3590. index 0000000..b3fb617
  3591. --- /dev/null
  3592. +++ b/src/lib/ncloud.ts
  3593. @@ -0,0 +1,431 @@
  3594. +// CloudObject.ts
  3595. +
  3596. +let serverURL = `https://dev.fmode.cn/parse`;
  3597. +if(location.protocol=="http:"){
  3598. + serverURL = `http://dev.fmode.cn:1337/parse`;
  3599. +}
  3600. +
  3601. +export class CloudObject {
  3602. + className: string;
  3603. + id: string | null = null;
  3604. + createdAt:any;
  3605. + updatedAt:any;
  3606. + data: Record<string, any> = {};
  3607. +
  3608. + constructor(className: string) {
  3609. + this.className = className;
  3610. + }
  3611. +
  3612. + toPointer() {
  3613. + return { "__type": "Pointer", "className": this.className, "objectId": this.id };
  3614. + }
  3615. +
  3616. + set(json: Record<string, any>) {
  3617. + Object.keys(json).forEach(key => {
  3618. + if (["objectId", "id", "createdAt", "updatedAt"].indexOf(key) > -1) {
  3619. + return;
  3620. + }
  3621. + this.data[key] = json[key];
  3622. + });
  3623. + }
  3624. +
  3625. + get(key: string) {
  3626. + return this.data[key] || null;
  3627. + }
  3628. +
  3629. + async save() {
  3630. + let method = "POST";
  3631. + let url = serverURL + `/classes/${this.className}`;
  3632. +
  3633. + // 更新
  3634. + if (this.id) {
  3635. + url += `/${this.id}`;
  3636. + method = "PUT";
  3637. + }
  3638. +
  3639. + const body = JSON.stringify(this.data);
  3640. + const response = await fetch(url, {
  3641. + headers: {
  3642. + "content-type": "application/json;charset=UTF-8",
  3643. + "x-parse-application-id": "dev"
  3644. + },
  3645. + body: body,
  3646. + method: method,
  3647. + mode: "cors",
  3648. + credentials: "omit"
  3649. + });
  3650. +
  3651. + const result = await response?.json();
  3652. + if (result?.error) {
  3653. + console.error(result?.error);
  3654. + }
  3655. + if (result?.objectId) {
  3656. + this.id = result?.objectId;
  3657. + }
  3658. + return this;
  3659. + }
  3660. +
  3661. + async destroy() {
  3662. + if (!this.id) return;
  3663. + const response = await fetch(serverURL + `/classes/${this.className}/${this.id}`, {
  3664. + headers: {
  3665. + "x-parse-application-id": "dev"
  3666. + },
  3667. + body: null,
  3668. + method: "DELETE",
  3669. + mode: "cors",
  3670. + credentials: "omit"
  3671. + });
  3672. +
  3673. + const result = await response?.json();
  3674. + if (result) {
  3675. + this.id = null;
  3676. + }
  3677. + return true;
  3678. + }
  3679. +}
  3680. +
  3681. +// CloudQuery.ts
  3682. +export class CloudQuery {
  3683. + className: string;
  3684. + queryParams: Record<string, any> = {};
  3685. +
  3686. + constructor(className: string) {
  3687. + this.className = className;
  3688. + }
  3689. +
  3690. + include(...fileds:string[]) {
  3691. + this.queryParams["include"] = fileds;
  3692. + }
  3693. + greaterThan(key: string, value: any) {
  3694. + if (!this.queryParams["where"][key]) this.queryParams["where"][key] = {};
  3695. + this.queryParams["where"][key]["$gt"] = value;
  3696. + }
  3697. +
  3698. + greaterThanAndEqualTo(key: string, value: any) {
  3699. + if (!this.queryParams["where"][key]) this.queryParams["where"][key] = {};
  3700. + this.queryParams["where"][key]["$gte"] = value;
  3701. + }
  3702. +
  3703. + lessThan(key: string, value: any) {
  3704. + if (!this.queryParams["where"][key]) this.queryParams["where"][key] = {};
  3705. + this.queryParams["where"][key]["$lt"] = value;
  3706. + }
  3707. +
  3708. + lessThanAndEqualTo(key: string, value: any) {
  3709. + if (!this.queryParams["where"][key]) this.queryParams["where"][key] = {};
  3710. + this.queryParams["where"][key]["$lte"] = value;
  3711. + }
  3712. +
  3713. + equalTo(key: string, value: any) {
  3714. + if (!this.queryParams["where"]) this.queryParams["where"] = {};
  3715. + this.queryParams["where"][key] = value;
  3716. + }
  3717. +
  3718. + async get(id: string) {
  3719. + const url = serverURL + `/classes/${this.className}/${id}?`;
  3720. +
  3721. + const response = await fetch(url, {
  3722. + headers: {
  3723. + "if-none-match": "W/\"1f0-ghxH2EwTk6Blz0g89ivf2adBDKY\"",
  3724. + "x-parse-application-id": "dev"
  3725. + },
  3726. + body: null,
  3727. + method: "GET",
  3728. + mode: "cors",
  3729. + credentials: "omit"
  3730. + });
  3731. +
  3732. + const json = await response?.json();
  3733. + if (json) {
  3734. + let existsObject = this.dataToObj(json)
  3735. + return existsObject;
  3736. + }
  3737. + return null
  3738. + }
  3739. +
  3740. + async find():Promise<Array<CloudObject>> {
  3741. + let url = serverURL + `/classes/${this.className}?`;
  3742. +
  3743. + let queryStr = ``
  3744. + Object.keys(this.queryParams).forEach(key=>{
  3745. + let paramStr = JSON.stringify(this.queryParams[key]);
  3746. + if(key=="include"){
  3747. + paramStr = this.queryParams[key]?.join(",")
  3748. + }
  3749. + if(queryStr) {
  3750. + url += `${key}=${paramStr}`;
  3751. + }else{
  3752. + url += `&${key}=${paramStr}`;
  3753. + }
  3754. + })
  3755. + // if (Object.keys(this.queryParams["where"]).length) {
  3756. +
  3757. + // }
  3758. +
  3759. + const response = await fetch(url, {
  3760. + headers: {
  3761. + "if-none-match": "W/\"1f0-ghxH2EwTk6Blz0g89ivf2adBDKY\"",
  3762. + "x-parse-application-id": "dev"
  3763. + },
  3764. + body: null,
  3765. + method: "GET",
  3766. + mode: "cors",
  3767. + credentials: "omit"
  3768. + });
  3769. +
  3770. + const json = await response?.json();
  3771. + let list = json?.results || []
  3772. + let objList = list.map((item:any)=>this.dataToObj(item))
  3773. + return objList || [];
  3774. + }
  3775. +
  3776. +
  3777. + async first() {
  3778. + let url = serverURL + `/classes/${this.className}?`;
  3779. +
  3780. + if (Object.keys(this.queryParams["where"]).length) {
  3781. + const whereStr = JSON.stringify(this.queryParams["where"]);
  3782. + url += `where=${whereStr}&limit=1`;
  3783. + }
  3784. +
  3785. + const response = await fetch(url, {
  3786. + headers: {
  3787. + "if-none-match": "W/\"1f0-ghxH2EwTk6Blz0g89ivf2adBDKY\"",
  3788. + "x-parse-application-id": "dev"
  3789. + },
  3790. + body: null,
  3791. + method: "GET",
  3792. + mode: "cors",
  3793. + credentials: "omit"
  3794. + });
  3795. +
  3796. + const json = await response?.json();
  3797. + const exists = json?.results?.[0] || null;
  3798. + if (exists) {
  3799. + let existsObject = this.dataToObj(exists)
  3800. + return existsObject;
  3801. + }
  3802. + return null
  3803. + }
  3804. +
  3805. + dataToObj(exists:any):CloudObject{
  3806. + let existsObject = new CloudObject(this.className);
  3807. + Object.keys(exists).forEach(key=>{
  3808. + if(exists[key]?.__type =="Object"){
  3809. + exists[key] = this.dataToObj(exists[key])
  3810. + }
  3811. + })
  3812. + existsObject.set(exists);
  3813. + existsObject.id = exists.objectId;
  3814. + existsObject.createdAt = exists.createdAt;
  3815. + existsObject.updatedAt = exists.updatedAt;
  3816. + return existsObject;
  3817. + }
  3818. +}
  3819. +
  3820. +// CloudUser.ts
  3821. +export class CloudUser extends CloudObject {
  3822. + constructor() {
  3823. + super("_User"); // 假设用户类在Parse中是"_User"
  3824. + // 读取用户缓存信息
  3825. + let userCacheStr = localStorage.getItem("NCloud/dev/User")
  3826. + if(userCacheStr){
  3827. + let userData = JSON.parse(userCacheStr)
  3828. + // 设置用户信息
  3829. + this.id = userData?.objectId;
  3830. + this.sessionToken = userData?.sessionToken;
  3831. + this.data = userData; // 保存用户数据
  3832. + }
  3833. + }
  3834. +
  3835. + sessionToken:string|null = ""
  3836. + /** 获取当前用户信息 */
  3837. + async current() {
  3838. + if (!this.sessionToken) {
  3839. + console.error("用户未登录");
  3840. + return null;
  3841. + }
  3842. + return this;
  3843. + // const response = await fetch(serverURL + `/users/me`, {
  3844. + // headers: {
  3845. + // "x-parse-application-id": "dev",
  3846. + // "x-parse-session-token": this.sessionToken // 使用sessionToken进行身份验证
  3847. + // },
  3848. + // method: "GET"
  3849. + // });
  3850. +
  3851. + // const result = await response?.json();
  3852. + // if (result?.error) {
  3853. + // console.error(result?.error);
  3854. + // return null;
  3855. + // }
  3856. + // return result;
  3857. + }
  3858. +
  3859. + /** 登录 */
  3860. + async login(username: string, password: string):Promise<CloudUser|null> {
  3861. + const response = await fetch(serverURL + `/login`, {
  3862. + headers: {
  3863. + "x-parse-application-id": "dev",
  3864. + "Content-Type": "application/json"
  3865. + },
  3866. + body: JSON.stringify({ username, password }),
  3867. + method: "POST"
  3868. + });
  3869. +
  3870. + const result = await response?.json();
  3871. + if (result?.error) {
  3872. + console.error(result?.error);
  3873. + return null;
  3874. + }
  3875. +
  3876. + // 设置用户信息
  3877. + this.id = result?.objectId;
  3878. + this.sessionToken = result?.sessionToken;
  3879. + this.data = result; // 保存用户数据
  3880. + // 缓存用户信息
  3881. + console.log(result)
  3882. + localStorage.setItem("NCloud/dev/User",JSON.stringify(result))
  3883. + return this;
  3884. + }
  3885. +
  3886. + /** 登出 */
  3887. + async logout() {
  3888. + if (!this.sessionToken) {
  3889. + console.error("用户未登录");
  3890. + return;
  3891. + }
  3892. +
  3893. + const response = await fetch(serverURL + `/logout`, {
  3894. + headers: {
  3895. + "x-parse-application-id": "dev",
  3896. + "x-parse-session-token": this.sessionToken
  3897. + },
  3898. + method: "POST"
  3899. + });
  3900. +
  3901. + let result = await response?.json();
  3902. +
  3903. + if (result?.error) {
  3904. + console.error(result?.error);
  3905. + if(result?.error=="Invalid session token"){
  3906. + this.clearUserCache()
  3907. + return true;
  3908. + }
  3909. + return false;
  3910. + }
  3911. +
  3912. + this.clearUserCache()
  3913. + return true;
  3914. + }
  3915. + clearUserCache(){
  3916. + // 清除用户信息
  3917. + localStorage.removeItem("NCloud/dev/User")
  3918. + this.id = null;
  3919. + this.sessionToken = null;
  3920. + this.data = {};
  3921. + }
  3922. +
  3923. + /** 注册 */
  3924. + async signUp(username: string, password: string, additionalData: Record<string, any> = {}) {
  3925. + const userData = {
  3926. + username,
  3927. + password,
  3928. + ...additionalData // 合并额外的用户数据
  3929. + };
  3930. +
  3931. + const response = await fetch(serverURL + `/users`, {
  3932. + headers: {
  3933. + "x-parse-application-id": "dev",
  3934. + "Content-Type": "application/json"
  3935. + },
  3936. + body: JSON.stringify(userData),
  3937. + method: "POST"
  3938. + });
  3939. +
  3940. + const result = await response?.json();
  3941. + if (result?.error) {
  3942. + console.error(result?.error);
  3943. + return null;
  3944. + }
  3945. +
  3946. + // 设置用户信息
  3947. + // 缓存用户信息
  3948. + console.log(result)
  3949. + localStorage.setItem("NCloud/dev/User",JSON.stringify(result))
  3950. + this.id = result?.objectId;
  3951. + this.sessionToken = result?.sessionToken;
  3952. + this.data = result; // 保存用户数据
  3953. + return this;
  3954. + }
  3955. +
  3956. + override async save() {
  3957. + let method = "POST";
  3958. + let url = serverURL + `/users`;
  3959. +
  3960. + // 更新用户信息
  3961. + if (this.id) {
  3962. + url += `/${this.id}`;
  3963. + method = "PUT";
  3964. + }
  3965. +
  3966. + let data:any = JSON.parse(JSON.stringify(this.data))
  3967. + delete data.createdAt
  3968. + delete data.updatedAt
  3969. + delete data.ACL
  3970. + delete data.objectId
  3971. + const body = JSON.stringify(data);
  3972. + let headersOptions:any = {
  3973. + "content-type": "application/json;charset=UTF-8",
  3974. + "x-parse-application-id": "dev",
  3975. + "x-parse-session-token": this.sessionToken, // 添加sessionToken以进行身份验证
  3976. + }
  3977. + const response = await fetch(url, {
  3978. + headers: headersOptions,
  3979. + body: body,
  3980. + method: method,
  3981. + mode: "cors",
  3982. + credentials: "omit"
  3983. + });
  3984. +
  3985. + const result = await response?.json();
  3986. + if (result?.error) {
  3987. + console.error(result?.error);
  3988. + }
  3989. + if (result?.objectId) {
  3990. + this.id = result?.objectId;
  3991. + }
  3992. + localStorage.setItem("NCloud/dev/User",JSON.stringify(this.data))
  3993. + return this;
  3994. + }
  3995. +}
  3996. +
  3997. +export class CloudApi{
  3998. + async fetch(path:string,body:any,options?:{
  3999. + method:string
  4000. + body:any
  4001. + }){
  4002. +
  4003. + let reqOpts:any = {
  4004. + headers: {
  4005. + "x-parse-application-id": "dev",
  4006. + "Content-Type": "application/json"
  4007. + },
  4008. + method: options?.method || "POST",
  4009. + mode: "cors",
  4010. + credentials: "omit"
  4011. + }
  4012. + if(body||options?.body){
  4013. + reqOpts.body = JSON.stringify(body || options?.body);
  4014. + reqOpts.json = true;
  4015. + }
  4016. + let host = `https://dev.fmode.cn`
  4017. + // host = `http://127.0.0.1:1337`
  4018. + let url = `${host}/api/`+path
  4019. + console.log(url,reqOpts)
  4020. + const response = await fetch(url,reqOpts);
  4021. + let json = await response.json();
  4022. + return json
  4023. + }
  4024. +}
  4025. diff --git a/tsconfig.json b/tsconfig.json
  4026. index e426762..ca2b6aa 100644
  4027. --- a/tsconfig.json
  4028. +++ b/tsconfig.json
  4029. @@ -6,10 +6,12 @@
  4030. "outDir": "./dist/out-tsc",
  4031. "forceConsistentCasingInFileNames": true,
  4032. "strict": true,
  4033. + "skipLibCheck": true,
  4034. "noImplicitOverride": true,
  4035. "noPropertyAccessFromIndexSignature": true,
  4036. "noImplicitReturns": true,
  4037. "noFallthroughCasesInSwitch": true,
  4038. + "allowSyntheticDefaultImports":true,
  4039. "sourceMap": true,
  4040. "declaration": false,
  4041. "downlevelIteration": true,
  4042. @@ -20,7 +22,7 @@
  4043. "module": "es2020",
  4044. "lib": [
  4045. "es2018",
  4046. - "dom"
  4047. + "dom","dom.iterable"
  4048. ],
  4049. "useDefineForClassFields": false
  4050. },