@dartfx/n8n-nodes-qsv 0.0.0-stage โ 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +374 -2
- package/dist/nodes/Qsv/Qsv.node.d.ts +5 -0
- package/dist/nodes/Qsv/Qsv.node.js +938 -0
- package/dist/nodes/Qsv/Qsv.node.json +13 -0
- package/dist/nodes/Qsv/actions/executeApply.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeApply.js +188 -0
- package/dist/nodes/Qsv/actions/executeBehead.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeBehead.js +113 -0
- package/dist/nodes/Qsv/actions/executeBlake3.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeBlake3.js +134 -0
- package/dist/nodes/Qsv/actions/executeCat.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeCat.js +135 -0
- package/dist/nodes/Qsv/actions/executeCount.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeCount.js +134 -0
- package/dist/nodes/Qsv/actions/executeDatefmt.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeDatefmt.js +157 -0
- package/dist/nodes/Qsv/actions/executeDedup.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeDedup.js +137 -0
- package/dist/nodes/Qsv/actions/executeDenull.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeDenull.js +137 -0
- package/dist/nodes/Qsv/actions/executeDescribegpt.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeDescribegpt.js +215 -0
- package/dist/nodes/Qsv/actions/executeDiff.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeDiff.js +147 -0
- package/dist/nodes/Qsv/actions/executeEdit.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeEdit.js +128 -0
- package/dist/nodes/Qsv/actions/executeEnum.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeEnum.js +140 -0
- package/dist/nodes/Qsv/actions/executeExcel.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeExcel.js +146 -0
- package/dist/nodes/Qsv/actions/executeExclude.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeExclude.js +140 -0
- package/dist/nodes/Qsv/actions/executeExplode.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeExplode.js +129 -0
- package/dist/nodes/Qsv/actions/executeExtdedup.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeExtdedup.js +134 -0
- package/dist/nodes/Qsv/actions/executeExtsort.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeExtsort.js +128 -0
- package/dist/nodes/Qsv/actions/executeFetch.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeFetch.js +181 -0
- package/dist/nodes/Qsv/actions/executeFetchpost.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeFetchpost.js +195 -0
- package/dist/nodes/Qsv/actions/executeFill.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeFill.js +133 -0
- package/dist/nodes/Qsv/actions/executeFixedwidth.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeFixedwidth.js +116 -0
- package/dist/nodes/Qsv/actions/executeFixlengths.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeFixlengths.js +128 -0
- package/dist/nodes/Qsv/actions/executeFlatten.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeFlatten.js +122 -0
- package/dist/nodes/Qsv/actions/executeFmt.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeFmt.js +137 -0
- package/dist/nodes/Qsv/actions/executeForeach.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeForeach.js +132 -0
- package/dist/nodes/Qsv/actions/executeFrequency.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeFrequency.js +215 -0
- package/dist/nodes/Qsv/actions/executeGeocode.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeGeocode.js +195 -0
- package/dist/nodes/Qsv/actions/executeGeoconvert.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeGeoconvert.js +132 -0
- package/dist/nodes/Qsv/actions/executeGet.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeGet.js +166 -0
- package/dist/nodes/Qsv/actions/executeHeaders.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeHeaders.js +122 -0
- package/dist/nodes/Qsv/actions/executeImplode.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeImplode.js +136 -0
- package/dist/nodes/Qsv/actions/executeIndex.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeIndex.js +107 -0
- package/dist/nodes/Qsv/actions/executeInput.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeInput.js +146 -0
- package/dist/nodes/Qsv/actions/executeJoin.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeJoin.js +167 -0
- package/dist/nodes/Qsv/actions/executeJoinp.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeJoinp.js +243 -0
- package/dist/nodes/Qsv/actions/executeJson.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeJson.js +116 -0
- package/dist/nodes/Qsv/actions/executeJsonl.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeJsonl.js +119 -0
- package/dist/nodes/Qsv/actions/executeLuau.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeLuau.js +159 -0
- package/dist/nodes/Qsv/actions/executeMoarstats.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeMoarstats.js +155 -0
- package/dist/nodes/Qsv/actions/executePartition.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executePartition.js +135 -0
- package/dist/nodes/Qsv/actions/executePivotp.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executePivotp.js +162 -0
- package/dist/nodes/Qsv/actions/executePragmastat.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executePragmastat.js +155 -0
- package/dist/nodes/Qsv/actions/executePro.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executePro.js +114 -0
- package/dist/nodes/Qsv/actions/executeProfile.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeProfile.js +161 -0
- package/dist/nodes/Qsv/actions/executePseudo.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executePseudo.js +130 -0
- package/dist/nodes/Qsv/actions/executeReadstat.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeReadstat.js +155 -0
- package/dist/nodes/Qsv/actions/executeRename.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeRename.js +124 -0
- package/dist/nodes/Qsv/actions/executeReplace.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeReplace.js +150 -0
- package/dist/nodes/Qsv/actions/executeReverse.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeReverse.js +119 -0
- package/dist/nodes/Qsv/actions/executeSafenames.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeSafenames.js +128 -0
- package/dist/nodes/Qsv/actions/executeSample.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeSample.js +181 -0
- package/dist/nodes/Qsv/actions/executeSchema.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeSchema.js +149 -0
- package/dist/nodes/Qsv/actions/executeScoresql.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeScoresql.js +136 -0
- package/dist/nodes/Qsv/actions/executeSearch.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeSearch.js +163 -0
- package/dist/nodes/Qsv/actions/executeSearchset.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeSearchset.js +166 -0
- package/dist/nodes/Qsv/actions/executeSelect.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeSelect.js +130 -0
- package/dist/nodes/Qsv/actions/executeSlice.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeSlice.js +134 -0
- package/dist/nodes/Qsv/actions/executeSnappy.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeSnappy.js +120 -0
- package/dist/nodes/Qsv/actions/executeSniff.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeSniff.js +146 -0
- package/dist/nodes/Qsv/actions/executeSort.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeSort.js +149 -0
- package/dist/nodes/Qsv/actions/executeSortcheck.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeSortcheck.js +134 -0
- package/dist/nodes/Qsv/actions/executeSplit.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeSplit.js +142 -0
- package/dist/nodes/Qsv/actions/executeSqlp.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeSqlp.js +175 -0
- package/dist/nodes/Qsv/actions/executeStats.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeStats.js +206 -0
- package/dist/nodes/Qsv/actions/executeSynthesize.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeSynthesize.js +149 -0
- package/dist/nodes/Qsv/actions/executeTable.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeTable.js +128 -0
- package/dist/nodes/Qsv/actions/executeTemplate.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeTemplate.js +151 -0
- package/dist/nodes/Qsv/actions/executeTo.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeTo.js +167 -0
- package/dist/nodes/Qsv/actions/executeTojsonl.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeTojsonl.js +125 -0
- package/dist/nodes/Qsv/actions/executeTranspose.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeTranspose.js +125 -0
- package/dist/nodes/Qsv/actions/executeValidate.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeValidate.js +184 -0
- package/dist/nodes/Qsv/actions/executeViz.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeViz.js +354 -0
- package/dist/nodes/Qsv/actions/executeWritestat.d.ts +2 -0
- package/dist/nodes/Qsv/actions/executeWritestat.js +128 -0
- package/dist/nodes/Qsv/descriptions/ApplyDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ApplyDescription.js +249 -0
- package/dist/nodes/Qsv/descriptions/BeheadDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/BeheadDescription.js +63 -0
- package/dist/nodes/Qsv/descriptions/Blake3Description.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/Blake3Description.js +112 -0
- package/dist/nodes/Qsv/descriptions/CatDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/CatDescription.js +116 -0
- package/dist/nodes/Qsv/descriptions/CountDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/CountDescription.js +107 -0
- package/dist/nodes/Qsv/descriptions/DatefmtDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/DatefmtDescription.js +167 -0
- package/dist/nodes/Qsv/descriptions/DedupDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/DedupDescription.js +119 -0
- package/dist/nodes/Qsv/descriptions/DenullDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/DenullDescription.js +119 -0
- package/dist/nodes/Qsv/descriptions/DescribegptDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/DescribegptDescription.js +301 -0
- package/dist/nodes/Qsv/descriptions/DiffDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/DiffDescription.js +146 -0
- package/dist/nodes/Qsv/descriptions/EditDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/EditDescription.js +109 -0
- package/dist/nodes/Qsv/descriptions/EnumDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/EnumDescription.js +126 -0
- package/dist/nodes/Qsv/descriptions/ExcelDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ExcelDescription.js +140 -0
- package/dist/nodes/Qsv/descriptions/ExcludeDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ExcludeDescription.js +130 -0
- package/dist/nodes/Qsv/descriptions/ExplodeDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ExplodeDescription.js +103 -0
- package/dist/nodes/Qsv/descriptions/ExtdedupDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ExtdedupDescription.js +112 -0
- package/dist/nodes/Qsv/descriptions/ExtsortDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ExtsortDescription.js +98 -0
- package/dist/nodes/Qsv/descriptions/FetchDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/FetchDescription.js +223 -0
- package/dist/nodes/Qsv/descriptions/FetchpostDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/FetchpostDescription.js +257 -0
- package/dist/nodes/Qsv/descriptions/FillDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/FillDescription.js +111 -0
- package/dist/nodes/Qsv/descriptions/FixedwidthDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/FixedwidthDescription.js +70 -0
- package/dist/nodes/Qsv/descriptions/FixlengthsDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/FixlengthsDescription.js +98 -0
- package/dist/nodes/Qsv/descriptions/FlattenDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/FlattenDescription.js +79 -0
- package/dist/nodes/Qsv/descriptions/FmtDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/FmtDescription.js +119 -0
- package/dist/nodes/Qsv/descriptions/ForeachDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ForeachDescription.js +105 -0
- package/dist/nodes/Qsv/descriptions/FrequencyDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/FrequencyDescription.js +301 -0
- package/dist/nodes/Qsv/descriptions/GeocodeDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/GeocodeDescription.js +277 -0
- package/dist/nodes/Qsv/descriptions/GeoconvertDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/GeoconvertDescription.js +110 -0
- package/dist/nodes/Qsv/descriptions/GetDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/GetDescription.js +209 -0
- package/dist/nodes/Qsv/descriptions/HeadersDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/HeadersDescription.js +79 -0
- package/dist/nodes/Qsv/descriptions/ImplodeDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ImplodeDescription.js +118 -0
- package/dist/nodes/Qsv/descriptions/IndexDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/IndexDescription.js +43 -0
- package/dist/nodes/Qsv/descriptions/InputDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/InputDescription.js +140 -0
- package/dist/nodes/Qsv/descriptions/JoinDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/JoinDescription.js +193 -0
- package/dist/nodes/Qsv/descriptions/JoinpDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/JoinpDescription.js +375 -0
- package/dist/nodes/Qsv/descriptions/JsonDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/JsonDescription.js +70 -0
- package/dist/nodes/Qsv/descriptions/JsonlDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/JsonlDescription.js +77 -0
- package/dist/nodes/Qsv/descriptions/LuauDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/LuauDescription.js +176 -0
- package/dist/nodes/Qsv/descriptions/MoarstatsDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/MoarstatsDescription.js +161 -0
- package/dist/nodes/Qsv/descriptions/PartitionDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/PartitionDescription.js +112 -0
- package/dist/nodes/Qsv/descriptions/PivotpDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/PivotpDescription.js +181 -0
- package/dist/nodes/Qsv/descriptions/PragmastatDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/PragmastatDescription.js +161 -0
- package/dist/nodes/Qsv/descriptions/ProDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ProDescription.js +60 -0
- package/dist/nodes/Qsv/descriptions/ProfileDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ProfileDescription.js +175 -0
- package/dist/nodes/Qsv/descriptions/PseudoDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/PseudoDescription.js +104 -0
- package/dist/nodes/Qsv/descriptions/ReadstatDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ReadstatDescription.js +161 -0
- package/dist/nodes/Qsv/descriptions/RenameDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/RenameDescription.js +90 -0
- package/dist/nodes/Qsv/descriptions/ReplaceDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ReplaceDescription.js +152 -0
- package/dist/nodes/Qsv/descriptions/ReverseDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ReverseDescription.js +77 -0
- package/dist/nodes/Qsv/descriptions/SafenamesDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/SafenamesDescription.js +98 -0
- package/dist/nodes/Qsv/descriptions/SampleDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/SampleDescription.js +230 -0
- package/dist/nodes/Qsv/descriptions/SchemaDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/SchemaDescription.js +147 -0
- package/dist/nodes/Qsv/descriptions/ScoresqlDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ScoresqlDescription.js +118 -0
- package/dist/nodes/Qsv/descriptions/SearchDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/SearchDescription.js +181 -0
- package/dist/nodes/Qsv/descriptions/SearchsetDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/SearchsetDescription.js +188 -0
- package/dist/nodes/Qsv/descriptions/SelectDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/SelectDescription.js +104 -0
- package/dist/nodes/Qsv/descriptions/SliceDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/SliceDescription.js +112 -0
- package/dist/nodes/Qsv/descriptions/SnappyDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/SnappyDescription.js +82 -0
- package/dist/nodes/Qsv/descriptions/SniffDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/SniffDescription.js +135 -0
- package/dist/nodes/Qsv/descriptions/SortDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/SortDescription.js +147 -0
- package/dist/nodes/Qsv/descriptions/SortcheckDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/SortcheckDescription.js +107 -0
- package/dist/nodes/Qsv/descriptions/SplitDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/SplitDescription.js +127 -0
- package/dist/nodes/Qsv/descriptions/SqlpDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/SqlpDescription.js +209 -0
- package/dist/nodes/Qsv/descriptions/StatsDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/StatsDescription.js +280 -0
- package/dist/nodes/Qsv/descriptions/SynthesizeDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/SynthesizeDescription.js +147 -0
- package/dist/nodes/Qsv/descriptions/TableDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/TableDescription.js +98 -0
- package/dist/nodes/Qsv/descriptions/TemplateDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/TemplateDescription.js +153 -0
- package/dist/nodes/Qsv/descriptions/ToDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ToDescription.js +190 -0
- package/dist/nodes/Qsv/descriptions/TojsonlDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/TojsonlDescription.js +91 -0
- package/dist/nodes/Qsv/descriptions/TransposeDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/TransposeDescription.js +91 -0
- package/dist/nodes/Qsv/descriptions/ValidateDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/ValidateDescription.js +234 -0
- package/dist/nodes/Qsv/descriptions/VizDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/VizDescription.js +648 -0
- package/dist/nodes/Qsv/descriptions/WritestatDescription.d.ts +2 -0
- package/dist/nodes/Qsv/descriptions/WritestatDescription.js +98 -0
- package/dist/nodes/Qsv/qsv.svg +7 -0
- package/index.js +2 -0
- package/package.json +64 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Data Artifex
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,375 @@
|
|
|
1
|
-
#
|
|
1
|
+
# n8n Community Node for datHere QSV (`@dartfx/n8n-nodes-qsv`)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@dartfx/n8n-nodes-qsv)
|
|
4
|
+
[](https://github.com/DataArtifex/dartfx-n8n-nodes-qsv/actions/workflows/ci.yml)
|
|
5
|
+
[](https://dataartifex.github.io/dartfx-n8n-nodes-qsv/)
|
|
6
|
+
[](https://deepwiki.com/DataArtifex/dartfx-n8n-nodes-qsv)
|
|
7
|
+
[](https://docs.n8n.io/integrations/community-nodes/)
|
|
8
|
+
[](https://github.com/dathere/qsv)
|
|
9
|
+
[](https://opensource.org/licenses/MIT)
|
|
10
|
+
|
|
11
|
+
> [!NOTE]
|
|
12
|
+
> Node APIs, parameters, and operation interfaces in `@dartfx/n8n-nodes-qsv` are actively expanding. Please report any issues or feature requests on [GitHub Issues](https://github.com/DataArtifex/dartfx-n8n-nodes-qsv/issues).
|
|
13
|
+
|
|
14
|
+
A custom [n8n](https://n8n.io/) community node for ultra-fast, zero-copy tabular data wrangling, transformation, validation, and analytics powered by [datHere QSV](https://github.com/dathere/qsv).
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## โก Key Features
|
|
19
|
+
|
|
20
|
+
- **File Path-First (Zero-Copy Architecture)**: Pass filesystem paths (`inputPath`, `outputPath`) between nodes to stream multi-gigabyte datasets directly through native Rust engines without overwhelming n8n memory. Downstream nodes can chain output directly with `{{ $json.outputPath }}`.
|
|
21
|
+
- **First-Class Positional & Typed Parameters**: Intuitive UI form fields for command-specific arguments (e.g. `selection` for `select`, `regex` for `search`, `sampleSize` for `sample`, `sql` for `sqlp`, `column`/`row`/`value` for `edit`) with precise docopt CLI argument ordering.
|
|
22
|
+
- **73+ Automated QSV Operations**: Full suite of high-performance tabular operations:
|
|
23
|
+
- **Profiling & Analysis**: `stats`, `frequency`, `schema`, `sniff`, `count`, `moarstats`, `pragmastat`, `profile`
|
|
24
|
+
- **Transformation & Cleaning**: `apply`, `behead`, `dedup`, `denull`, `fill`, `flatten`, `fmt`, `replace`, `safenames`, `rename`, `pseudo`, `edit`
|
|
25
|
+
- **Slicing, Search & Sampling**: `index`, `slice`, `search`, `searchset`, `select`, `sample`, `split`, `partition`
|
|
26
|
+
- **High-Speed SQL & Joins**: `sqlp` (Polars SQL engine), `join`, `joinp`, `pivotp`, `diff`, `explode`, `implode`
|
|
27
|
+
- **Format Conversions**: `to` (Parquet, XLSX, SQLite, Postgres, ODS, DataPackage), `excel`, `json`, `jsonl`, `tojsonl`, `fixedwidth`, `geoconvert`
|
|
28
|
+
- **AI & Web Services**: `describegpt` (LLM metadata/chat), `fetch`, `fetchpost`, `geocode`
|
|
29
|
+
- **Advanced Scripting & Validation**: `luau` embedded scripting, `validate` (JSON Schema / RFC4180), `blake3` cryptographic hashing, `synthesize` (statistical test data generation)
|
|
30
|
+
- **Feature-Gated Command Diagnostics**: Tagged feature requirements in UI dropdowns (`[Feature: polars]`, `[Feature: synthesize]`, `[Feature: luau]`) with actionable `NodeOperationError` guidance if a host binary lacks a compiled feature.
|
|
31
|
+
- **Dynamic CLI Synchronizer**: `pnpm run generate:qsv` automatically queries `qsv --list` and keeps all node definitions and parameter forms synchronized with your installed QSV binary.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## ๐ฆ Installation
|
|
36
|
+
|
|
37
|
+
### In self-hosted n8n instances:
|
|
38
|
+
|
|
39
|
+
Follow the [n8n Community Nodes installation guide](https://docs.n8n.io/integrations/community-nodes/installation/):
|
|
40
|
+
|
|
41
|
+
1. Go to **Settings > Community Nodes**.
|
|
42
|
+
2. Select **Install**.
|
|
43
|
+
3. Enter `@dartfx/n8n-nodes-qsv`.
|
|
44
|
+
4. Agree to the risks and select **Install**.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## ๐ System Prerequisites
|
|
49
|
+
|
|
50
|
+
This community node executes the high-performance **[QSV CLI](https://github.com/dathere/qsv)** under the hood. The `qsv` binary **must be installed and accessible in the system `$PATH`** where n8n is running.
|
|
51
|
+
|
|
52
|
+
> [!IMPORTANT]
|
|
53
|
+
> **n8n 3.0+ Docker Deployment Requirement:**
|
|
54
|
+
> Starting with **n8n 3.0**, self-hosted n8n requires a **Docker-based deployment** (bare `npm` / `npx n8n` installations are deprecated/removed). Because the official n8n Docker image does not include the native `qsv` binary, you must either:
|
|
55
|
+
>
|
|
56
|
+
> 1. Use a **custom multi-stage Dockerfile** (recommended below) to bake `qsv` into your runtime container.
|
|
57
|
+
> 2. Mount a host-compiled `qsv` binary into `/usr/local/bin/qsv` in your container.
|
|
58
|
+
|
|
59
|
+
### 1. Host Installation (n8n v1 / v2 or Local Development)
|
|
60
|
+
|
|
61
|
+
- **macOS (Homebrew)**:
|
|
62
|
+
```bash
|
|
63
|
+
brew install qsv
|
|
64
|
+
```
|
|
65
|
+
- **Debian / Ubuntu / Linux**:
|
|
66
|
+
Download pre-compiled binaries from [QSV GitHub Releases](https://github.com/dathere/qsv/releases) or build via Cargo:
|
|
67
|
+
```bash
|
|
68
|
+
cargo install qsv --locked --bin qsv --features all_features
|
|
69
|
+
```
|
|
70
|
+
- **Windows**:
|
|
71
|
+
```powershell
|
|
72
|
+
scoop install qsv
|
|
73
|
+
# or
|
|
74
|
+
choco install qsv
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 2. Docker / Self-Hosted n8n Container (Required for n8n 3.0+)
|
|
78
|
+
|
|
79
|
+
If you run n8n using Docker (standard for n8n 3.0+), create a custom multi-stage Dockerfile that fetches the versioned `qsv` binary:
|
|
80
|
+
|
|
81
|
+
```dockerfile
|
|
82
|
+
# Stage 1: Fetch and unpack the QSV binary
|
|
83
|
+
FROM alpine:latest AS qsv-fetcher
|
|
84
|
+
|
|
85
|
+
# See https://github.com/dathere/qsv/releases for latest
|
|
86
|
+
ARG QSV_VERSION=23.0.1
|
|
87
|
+
RUN apk add --no-cache curl unzip \
|
|
88
|
+
&& ARCH=$(uname -m) \
|
|
89
|
+
&& if [ "$ARCH" = "x86_64" ]; then \
|
|
90
|
+
QSV_ARCH="x86_64-unknown-linux-musl"; \
|
|
91
|
+
elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then \
|
|
92
|
+
QSV_ARCH="aarch64-unknown-linux-gnu"; \
|
|
93
|
+
else \
|
|
94
|
+
QSV_ARCH="x86_64-unknown-linux-musl"; \
|
|
95
|
+
fi \
|
|
96
|
+
&& curl -fsSL "https://github.com/dathere/qsv/releases/download/${QSV_VERSION}/qsv-${QSV_VERSION}-${QSV_ARCH}.zip" -o /tmp/qsv.zip \
|
|
97
|
+
&& unzip -q -o /tmp/qsv.zip qsv -d /usr/local/bin/ \
|
|
98
|
+
&& chmod +x /usr/local/bin/qsv
|
|
99
|
+
|
|
100
|
+
# Stage 2: n8n runtime image
|
|
101
|
+
FROM docker.n8n.io/n8nio/n8n:latest
|
|
102
|
+
|
|
103
|
+
USER root
|
|
104
|
+
COPY --from=qsv-fetcher /usr/local/bin/qsv /usr/local/bin/qsv
|
|
105
|
+
USER node
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
#### Docker Compose Example (`docker-compose.yml`)
|
|
109
|
+
|
|
110
|
+
```yaml
|
|
111
|
+
services:
|
|
112
|
+
n8n:
|
|
113
|
+
build:
|
|
114
|
+
context: .
|
|
115
|
+
dockerfile: Dockerfile
|
|
116
|
+
restart: unless-stopped
|
|
117
|
+
ports:
|
|
118
|
+
- "5678:5678"
|
|
119
|
+
environment:
|
|
120
|
+
- N8N_COMMUNITY_PACKAGES_ENABLED=true
|
|
121
|
+
- DARTFX_QSV_BIN_PATH=/usr/local/bin/qsv
|
|
122
|
+
volumes:
|
|
123
|
+
- n8n_data:/home/node/.n8n
|
|
124
|
+
- ./data:/data
|
|
125
|
+
|
|
126
|
+
volumes:
|
|
127
|
+
n8n_data:
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
> [!TIP]
|
|
131
|
+
> **Pre-Baking `@dartfx/n8n-nodes-qsv` (Immutable Containers):**
|
|
132
|
+
> If you want the community node package pre-installed inside the image (no in-app installation step required), add this to the end of your `Dockerfile`:
|
|
133
|
+
> ```dockerfile
|
|
134
|
+
> USER node
|
|
135
|
+
> RUN cd ~/.n8n && npm install @dartfx/n8n-nodes-qsv
|
|
136
|
+
> ```
|
|
137
|
+
|
|
138
|
+
### 3. Environment Variables (Custom Binary Path)
|
|
139
|
+
|
|
140
|
+
If `qsv` is installed in a non-standard location or outside your default `$PATH`, configure one of the following environment variables on your n8n instance:
|
|
141
|
+
|
|
142
|
+
| Variable | Description | Default |
|
|
143
|
+
| :-------------------------- | :------------------------------------------------------------ | :------ |
|
|
144
|
+
| `DARTFX_QSV_BIN_PATH` | Primary override for the QSV binary path used by DartFX nodes | โ |
|
|
145
|
+
| `QSV_BIN_PATH` / `QSV_PATH` | Generic fallback QSV binary path | โ |
|
|
146
|
+
| _(Fallback)_ | System `$PATH` resolution | `qsv` |
|
|
147
|
+
|
|
148
|
+
**Example in `.env` / Docker Compose:**
|
|
149
|
+
|
|
150
|
+
```env
|
|
151
|
+
DARTFX_QSV_BIN_PATH=/opt/custom/bin/qsv
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
- **Node.js**: v22+ (for local development & building)
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## ๐ Versioning & Compatibility Strategy
|
|
159
|
+
|
|
160
|
+
This package follows a decoupled versioning model to support multiple independent node collections (e.g. QSV, Data Artifex FAIRification, Harvester):
|
|
161
|
+
|
|
162
|
+
### 1. Package Semantic Versioning (`@dartfx/n8n-nodes-qsv`)
|
|
163
|
+
|
|
164
|
+
- The package follows standard [Semantic Versioning](https://semver.org/) (starting at `0.1.0`).
|
|
165
|
+
- Package releases are **independent** of external CLI versioning numbers.
|
|
166
|
+
- **Patch (`0.1.x`)**: Bug fixes, parameter corrections, and docs across any node collection.
|
|
167
|
+
- **Minor (`0.x.0`)**: Adding new node collections, new operations, or non-breaking features.
|
|
168
|
+
- **Major (`1.0.0`)**: Breaking changes in workflow node interfaces or execution contracts.
|
|
169
|
+
|
|
170
|
+
### 2. External Dependency Compatibility Matrix
|
|
171
|
+
|
|
172
|
+
Node collections that wrap host binaries declare and verify their target CLI versions:
|
|
173
|
+
|
|
174
|
+
| Node Collection | Host Requirement | Tested / Target CLI Version | Notes |
|
|
175
|
+
| :---------------------------- | :---------------------- | :-------------------------- | :------------------------------------------------ |
|
|
176
|
+
| **QSV Data Wrangler** (`qsv`) | `qsv` binary in `$PATH` | `v23.0.1` (`>= 23.0.0`) | Generated dynamically via `pnpm run generate:qsv` |
|
|
177
|
+
| **DartFx FAIR Nodes** | None (pure JS/TS) | N/A | Fully self-contained |
|
|
178
|
+
|
|
179
|
+
### 3. Workflow Upgrade Behavior in n8n
|
|
180
|
+
|
|
181
|
+
- **Non-breaking releases (Same `typeVersion: 1`)**: When an n8n instance installs a package update, existing workflows immediately execute the latest code without manual node re-configuration.
|
|
182
|
+
- **Breaking schema changes (`typeVersion: 2+`)**: If a node introduces breaking parameter schema changes, existing workflows remain safely pinned to `typeVersion: 1` until manually upgraded by the user in the n8n canvas.
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## ๐ป Development & Local Testing
|
|
187
|
+
|
|
188
|
+
### 1. Setup & Build
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# Clone repository
|
|
192
|
+
git clone https://github.com/DataArtifex/dartfx-n8n-nodes-qsv.git
|
|
193
|
+
cd dartfx-n8n-nodes-qsv
|
|
194
|
+
|
|
195
|
+
# Use supported Node LTS (20/22)
|
|
196
|
+
nvm use
|
|
197
|
+
|
|
198
|
+
# Install dependencies
|
|
199
|
+
pnpm install
|
|
200
|
+
|
|
201
|
+
# Regenerate QSV node definitions from latest CLI help (if updating QSV commands)
|
|
202
|
+
pnpm run generate:qsv
|
|
203
|
+
|
|
204
|
+
# Build package
|
|
205
|
+
pnpm run build
|
|
206
|
+
|
|
207
|
+
# Watch mode for active development
|
|
208
|
+
pnpm run dev
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
### 2. Testing with a Local n8n Instance
|
|
214
|
+
|
|
215
|
+
#### Method A: Docker Volume Mount (Standard & Required for n8n 3.0+)
|
|
216
|
+
|
|
217
|
+
For n8n 3.0+ or any Docker-based instance, mount your local built repository into the container's custom nodes folder:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
docker run -it --rm \
|
|
221
|
+
--name n8n \
|
|
222
|
+
-p 5678:5678 \
|
|
223
|
+
-v ~/.n8n:/home/node/.n8n \
|
|
224
|
+
-v $(pwd):/home/node/.n8n/custom/node_modules/@dartfx/n8n-nodes-qsv:ro \
|
|
225
|
+
-v /path/to/local/qsv:/usr/local/bin/qsv:ro \
|
|
226
|
+
docker.n8n.io/n8nio/n8n:latest
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
_(Note: `qsv` CLI must be mounted or baked into the Docker container's `$PATH` for QSV nodes to execute)._
|
|
230
|
+
|
|
231
|
+
#### Method B: Direct Local Link with `pnpm link <dir>` (n8n v1 / v2 Bare CLI)
|
|
232
|
+
|
|
233
|
+
If running an older n8n v1 or v2 instance directly via Node / npm on your host machine:
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
mkdir -p ~/.n8n/custom
|
|
237
|
+
cd ~/.n8n/custom
|
|
238
|
+
pnpm link /path/to/dartfx-n8n-nodes-qsv
|
|
239
|
+
|
|
240
|
+
# Start n8n
|
|
241
|
+
n8n start
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
> **๐ Do changes auto-refresh?**
|
|
245
|
+
>
|
|
246
|
+
> - **Recompilation**: Running `pnpm run dev` automatically recompiles TypeScript into `dist/` on save.
|
|
247
|
+
> - **n8n Process**: **No**, n8n caches loaded node modules in memory on startup. You must **stop and restart n8n** (and reload your browser tab) whenever you update node code for changes to take effect.
|
|
248
|
+
|
|
249
|
+
#### Method C: Traditional 2-Step `npm link` (n8n v1 / v2 Bare CLI)
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
# Step 1: Register package globally
|
|
253
|
+
cd /path/to/dartfx-n8n-nodes-qsv
|
|
254
|
+
npm link
|
|
255
|
+
|
|
256
|
+
# Step 2: Link into n8n custom directory
|
|
257
|
+
mkdir -p ~/.n8n/custom
|
|
258
|
+
cd ~/.n8n/custom
|
|
259
|
+
npm link @dartfx/n8n-nodes-qsv
|
|
260
|
+
|
|
261
|
+
# Start n8n
|
|
262
|
+
n8n start
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
### 3. Troubleshooting & Permissions
|
|
268
|
+
|
|
269
|
+
#### macOS External Drive Permissions (`/Volumes/...` / `os error 2` / `os error 1`)
|
|
270
|
+
|
|
271
|
+
If you see errors like:
|
|
272
|
+
|
|
273
|
+
```text
|
|
274
|
+
Failed executing 'qsv count': io error: No such file or directory (os error 2)
|
|
275
|
+
# or
|
|
276
|
+
io error: Operation not permitted (os error 1)
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
when accessing files on external drives (under `/Volumes/<DriveName>/...`):
|
|
280
|
+
|
|
281
|
+
1. macOS restricts child processes spawned by Node from accessing external drives without user consent.
|
|
282
|
+
2. Go to **System Settings** > **Privacy & Security** > **Files and Folders** (or **Full Disk Access**).
|
|
283
|
+
3. Locate the application where you run `n8n` (e.g. **Terminal**, **iTerm2**, **VS Code**, or **Ghostty**).
|
|
284
|
+
4. Ensure **Removable Volumes** (and/or **Full Disk Access**) is toggled **ON**.
|
|
285
|
+
5. Restart your terminal / n8n session.
|
|
286
|
+
|
|
287
|
+
#### Docker Filesystem Paths
|
|
288
|
+
|
|
289
|
+
If n8n is running inside Docker, host filesystem paths like `/Volumes/...` or `/Users/...` are **not visible** inside the container by default. You must volume-mount the data directory into the container:
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
-v /Volumes/MyExternalDrive/data:/data:ro
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
and then reference the path inside n8n as `/data/myfile.csv`.
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## ๐ Deployment & Publishing (Staging & Production)
|
|
300
|
+
|
|
301
|
+
### ๐ 1. Authentication Setup
|
|
302
|
+
|
|
303
|
+
Publishing scoped packages under the `@dartfx` organization requires an npm access token:
|
|
304
|
+
|
|
305
|
+
- **In your local environment (user-level `~/.npmrc`):**
|
|
306
|
+
```bash
|
|
307
|
+
pnpm config set "//registry.npmjs.org/:_authToken" "YOUR_NPM_TOKEN" --location=global
|
|
308
|
+
```
|
|
309
|
+
- **In GitHub Actions Secrets (CI/CD):**
|
|
310
|
+
Set `DARTFX_NODE_AUTH_TOKEN` (or `NODE_AUTH_TOKEN` / `NPM_TOKEN`) in **Settings > Secrets and variables > Actions**.
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
### ๐งช 2. Staging Deployment (Isolated Pre-Release)
|
|
315
|
+
|
|
316
|
+
To test the package in a live n8n instance without replacing or affecting the production `latest` release:
|
|
317
|
+
|
|
318
|
+
1. **Simulate package build & inspect tarball (Zero Risk):**
|
|
319
|
+
```bash
|
|
320
|
+
pnpm publish --dry-run --no-git-checks
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
2. **Set a pre-release version without creating a Git tag:**
|
|
324
|
+
```bash
|
|
325
|
+
pnpm version 0.2.0-staging.0 --no-git-tag-version
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
3. **Publish to npm with the `staging` dist-tag:**
|
|
329
|
+
```bash
|
|
330
|
+
pnpm publish --tag staging --access public --no-git-checks
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
4. **Install and verify in n8n:**
|
|
334
|
+
In n8n (**Settings > Community Nodes > Install**), specify:
|
|
335
|
+
```text
|
|
336
|
+
@dartfx/n8n-nodes-qsv@staging
|
|
337
|
+
```
|
|
338
|
+
*(or exact version `@dartfx/n8n-nodes-qsv@0.2.0-staging.0`)*
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
### ๐ข 3. Production Deployment
|
|
343
|
+
|
|
344
|
+
#### Option A: Automated via Git Tag & GitHub Actions (Recommended)
|
|
345
|
+
|
|
346
|
+
Pushing an annotated version tag triggers the [.github/workflows/publish.yml](.github/workflows/publish.yml) workflow:
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
# 1. Clean working tree and run checks
|
|
350
|
+
pnpm run lint && pnpm run test && pnpm run build
|
|
351
|
+
|
|
352
|
+
# 2. Bump production version and create git tag
|
|
353
|
+
pnpm version patch -m "chore(release): %s" # or minor / major
|
|
354
|
+
|
|
355
|
+
# 3. Push commit and tag to GitHub
|
|
356
|
+
git push origin main --follow-tags
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
#### Option B: Promote Existing Staged Version to Production
|
|
360
|
+
|
|
361
|
+
Promote a tested staging release to `latest` without rebuilding:
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
npm dist-tag add @dartfx/n8n-nodes-qsv@0.2.0-staging.0 latest
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
#### Option C: Manual CLI Production Publish
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
pnpm publish --tag latest --access public
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
See [AGENT.md](AGENT.md) for full architecture and development workflows, and [RELEASING.md](RELEASING.md) for detailed release policies and semver guide.
|