@mieweb/pulsevault 0.4.1 → 0.5.0
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/CHANGELOG.md +102 -1
- package/OPERATIONS.md +24 -10
- package/PROTOCOL.md +38 -1
- package/README.md +168 -29
- package/assets/README.md +33 -0
- package/assets/badge-app-store.svg +46 -0
- package/assets/badge-google-play.png +0 -0
- package/assets/pulse-logo-mono.svg +10 -0
- package/assets/pulse-logo.svg +14 -0
- package/dist/app.d.ts +24 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +20 -2
- package/dist/app.js.map +1 -1
- package/dist/augment.d.ts +3 -0
- package/dist/augment.d.ts.map +1 -1
- package/dist/augment.js.map +1 -1
- package/dist/core.d.ts +89 -4
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +301 -40
- package/dist/core.js.map +1 -1
- package/dist/lib/authorize.d.ts +28 -6
- package/dist/lib/authorize.d.ts.map +1 -1
- package/dist/lib/capability-token.d.ts +26 -0
- package/dist/lib/capability-token.d.ts.map +1 -1
- package/dist/lib/capability-token.js +73 -5
- package/dist/lib/capability-token.js.map +1 -1
- package/dist/lib/completion.d.ts +135 -0
- package/dist/lib/completion.d.ts.map +1 -0
- package/dist/lib/completion.js +288 -0
- package/dist/lib/completion.js.map +1 -0
- package/dist/lib/options.d.ts.map +1 -1
- package/dist/lib/options.js +2 -0
- package/dist/lib/options.js.map +1 -1
- package/dist/lib/protocol-version.gen.js +1 -1
- package/dist/lib/pulsevaultTus.d.ts +28 -26
- package/dist/lib/pulsevaultTus.d.ts.map +1 -1
- package/dist/lib/pulsevaultTus.js +114 -31
- package/dist/lib/pulsevaultTus.js.map +1 -1
- package/dist/routes/pulsevault.d.ts +12 -1
- package/dist/routes/pulsevault.d.ts.map +1 -1
- package/dist/routes/pulsevault.js +92 -1
- package/dist/routes/pulsevault.js.map +1 -1
- package/dist/storage/local.d.ts +7 -1
- package/dist/storage/local.d.ts.map +1 -1
- package/dist/storage/local.js +173 -8
- package/dist/storage/local.js.map +1 -1
- package/dist/storage/s3.d.ts +7 -1
- package/dist/storage/s3.d.ts.map +1 -1
- package/dist/storage/s3.js +236 -14
- package/dist/storage/s3.js.map +1 -1
- package/dist/storage/types.d.ts +73 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/package.json +6 -4
- package/protocol/openapi.json +247 -1
- package/protocol/schemas/artifact-status.schema.json +49 -0
- package/protocol/schemas/capability-token.schema.json +3 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<svg id="livetype" xmlns="http://www.w3.org/2000/svg" width="119.66407" height="40" viewBox="0 0 119.66407 40">
|
|
2
|
+
<title>Download_on_the_App_Store_Badge_US-UK_RGB_blk_4SVG_092917</title>
|
|
3
|
+
<g>
|
|
4
|
+
<g>
|
|
5
|
+
<g>
|
|
6
|
+
<path d="M110.13477,0H9.53468c-.3667,0-.729,0-1.09473.002-.30615.002-.60986.00781-.91895.0127A13.21476,13.21476,0,0,0,5.5171.19141a6.66509,6.66509,0,0,0-1.90088.627A6.43779,6.43779,0,0,0,1.99757,1.99707,6.25844,6.25844,0,0,0,.81935,3.61816a6.60119,6.60119,0,0,0-.625,1.90332,12.993,12.993,0,0,0-.1792,2.002C.00587,7.83008.00489,8.1377,0,8.44434V31.5586c.00489.3105.00587.6113.01515.9219a12.99232,12.99232,0,0,0,.1792,2.0019,6.58756,6.58756,0,0,0,.625,1.9043A6.20778,6.20778,0,0,0,1.99757,38.001a6.27445,6.27445,0,0,0,1.61865,1.1787,6.70082,6.70082,0,0,0,1.90088.6308,13.45514,13.45514,0,0,0,2.0039.1768c.30909.0068.6128.0107.91895.0107C8.80567,40,9.168,40,9.53468,40H110.13477c.3594,0,.7246,0,1.084-.002.3047,0,.6172-.0039.9219-.0107a13.279,13.279,0,0,0,2-.1768,6.80432,6.80432,0,0,0,1.9082-.6308,6.27742,6.27742,0,0,0,1.6172-1.1787,6.39482,6.39482,0,0,0,1.1816-1.6143,6.60413,6.60413,0,0,0,.6191-1.9043,13.50643,13.50643,0,0,0,.1856-2.0019c.0039-.3106.0039-.6114.0039-.9219.0078-.3633.0078-.7246.0078-1.0938V9.53613c0-.36621,0-.72949-.0078-1.09179,0-.30664,0-.61426-.0039-.9209a13.5071,13.5071,0,0,0-.1856-2.002,6.6177,6.6177,0,0,0-.6191-1.90332,6.46619,6.46619,0,0,0-2.7988-2.7998,6.76754,6.76754,0,0,0-1.9082-.627,13.04394,13.04394,0,0,0-2-.17676c-.3047-.00488-.6172-.01074-.9219-.01269-.3594-.002-.7246-.002-1.084-.002Z" style="fill: #a6a6a6"/>
|
|
7
|
+
<path d="M8.44483,39.125c-.30468,0-.602-.0039-.90429-.0107a12.68714,12.68714,0,0,1-1.86914-.1631,5.88381,5.88381,0,0,1-1.65674-.5479,5.40573,5.40573,0,0,1-1.397-1.0166,5.32082,5.32082,0,0,1-1.02051-1.3965,5.72186,5.72186,0,0,1-.543-1.6572,12.41351,12.41351,0,0,1-.1665-1.875c-.00634-.2109-.01464-.9131-.01464-.9131V8.44434S.88185,7.75293.8877,7.5498a12.37039,12.37039,0,0,1,.16553-1.87207,5.7555,5.7555,0,0,1,.54346-1.6621A5.37349,5.37349,0,0,1,2.61183,2.61768,5.56543,5.56543,0,0,1,4.01417,1.59521a5.82309,5.82309,0,0,1,1.65332-.54394A12.58589,12.58589,0,0,1,7.543.88721L8.44532.875H111.21387l.9131.0127a12.38493,12.38493,0,0,1,1.8584.16259,5.93833,5.93833,0,0,1,1.6709.54785,5.59374,5.59374,0,0,1,2.415,2.41993,5.76267,5.76267,0,0,1,.5352,1.64892,12.995,12.995,0,0,1,.1738,1.88721c.0029.2832.0029.5874.0029.89014.0079.375.0079.73193.0079,1.09179V30.4648c0,.3633,0,.7178-.0079,1.0752,0,.3252,0,.6231-.0039.9297a12.73126,12.73126,0,0,1-.1709,1.8535,5.739,5.739,0,0,1-.54,1.67,5.48029,5.48029,0,0,1-1.0156,1.3857,5.4129,5.4129,0,0,1-1.3994,1.0225,5.86168,5.86168,0,0,1-1.668.5498,12.54218,12.54218,0,0,1-1.8692.1631c-.2929.0068-.5996.0107-.8974.0107l-1.084.002Z"/>
|
|
8
|
+
</g>
|
|
9
|
+
<g id="_Group_" data-name="<Group>">
|
|
10
|
+
<g id="_Group_2" data-name="<Group>">
|
|
11
|
+
<g id="_Group_3" data-name="<Group>">
|
|
12
|
+
<path id="_Path_" data-name="<Path>" d="M24.76888,20.30068a4.94881,4.94881,0,0,1,2.35656-4.15206,5.06566,5.06566,0,0,0-3.99116-2.15768c-1.67924-.17626-3.30719,1.00483-4.1629,1.00483-.87227,0-2.18977-.98733-3.6085-.95814a5.31529,5.31529,0,0,0-4.47292,2.72787c-1.934,3.34842-.49141,8.26947,1.3612,10.97608.9269,1.32535,2.01018,2.8058,3.42763,2.7533,1.38706-.05753,1.9051-.88448,3.5794-.88448,1.65876,0,2.14479.88448,3.591.8511,1.48838-.02416,2.42613-1.33124,3.32051-2.66914a10.962,10.962,0,0,0,1.51842-3.09251A4.78205,4.78205,0,0,1,24.76888,20.30068Z" style="fill: #fff"/>
|
|
13
|
+
<path id="_Path_2" data-name="<Path>" d="M22.03725,12.21089a4.87248,4.87248,0,0,0,1.11452-3.49062,4.95746,4.95746,0,0,0-3.20758,1.65961,4.63634,4.63634,0,0,0-1.14371,3.36139A4.09905,4.09905,0,0,0,22.03725,12.21089Z" style="fill: #fff"/>
|
|
14
|
+
</g>
|
|
15
|
+
</g>
|
|
16
|
+
<g>
|
|
17
|
+
<path d="M42.30227,27.13965h-4.7334l-1.13672,3.35645H34.42727l4.4834-12.418h2.083l4.4834,12.418H43.438ZM38.0591,25.59082h3.752l-1.84961-5.44727h-.05176Z" style="fill: #fff"/>
|
|
18
|
+
<path d="M55.15969,25.96973c0,2.81348-1.50586,4.62109-3.77832,4.62109a3.0693,3.0693,0,0,1-2.84863-1.584h-.043v4.48438h-1.8584V21.44238H48.4302v1.50586h.03418a3.21162,3.21162,0,0,1,2.88281-1.60059C53.645,21.34766,55.15969,23.16406,55.15969,25.96973Zm-1.91016,0c0-1.833-.94727-3.03809-2.39258-3.03809-1.41992,0-2.375,1.23047-2.375,3.03809,0,1.82422.95508,3.0459,2.375,3.0459C52.30227,29.01563,53.24953,27.81934,53.24953,25.96973Z" style="fill: #fff"/>
|
|
19
|
+
<path d="M65.12453,25.96973c0,2.81348-1.50586,4.62109-3.77832,4.62109a3.0693,3.0693,0,0,1-2.84863-1.584h-.043v4.48438h-1.8584V21.44238H58.395v1.50586h.03418A3.21162,3.21162,0,0,1,61.312,21.34766C63.60988,21.34766,65.12453,23.16406,65.12453,25.96973Zm-1.91016,0c0-1.833-.94727-3.03809-2.39258-3.03809-1.41992,0-2.375,1.23047-2.375,3.03809,0,1.82422.95508,3.0459,2.375,3.0459C62.26711,29.01563,63.21438,27.81934,63.21438,25.96973Z" style="fill: #fff"/>
|
|
20
|
+
<path d="M71.71047,27.03613c.1377,1.23145,1.334,2.04,2.96875,2.04,1.56641,0,2.69336-.80859,2.69336-1.91895,0-.96387-.67969-1.541-2.28906-1.93652l-1.60937-.3877c-2.28027-.55078-3.33887-1.61719-3.33887-3.34766,0-2.14258,1.86719-3.61426,4.51855-3.61426,2.624,0,4.42285,1.47168,4.4834,3.61426h-1.876c-.1123-1.23926-1.13672-1.9873-2.63379-1.9873s-2.52148.75684-2.52148,1.8584c0,.87793.6543,1.39453,2.25488,1.79l1.36816.33594c2.54785.60254,3.60645,1.626,3.60645,3.44238,0,2.32324-1.85059,3.77832-4.79395,3.77832-2.75391,0-4.61328-1.4209-4.7334-3.667Z" style="fill: #fff"/>
|
|
21
|
+
<path d="M83.34621,19.2998v2.14258h1.72168v1.47168H83.34621v4.99121c0,.77539.34473,1.13672,1.10156,1.13672a5.80752,5.80752,0,0,0,.61133-.043v1.46289a5.10351,5.10351,0,0,1-1.03223.08594c-1.833,0-2.54785-.68848-2.54785-2.44434V22.91406H80.16262V21.44238H81.479V19.2998Z" style="fill: #fff"/>
|
|
22
|
+
<path d="M86.065,25.96973c0-2.84863,1.67773-4.63867,4.29395-4.63867,2.625,0,4.29492,1.79,4.29492,4.63867,0,2.85645-1.66113,4.63867-4.29492,4.63867C87.72609,30.6084,86.065,28.82617,86.065,25.96973Zm6.69531,0c0-1.9541-.89551-3.10742-2.40137-3.10742s-2.40039,1.16211-2.40039,3.10742c0,1.96191.89453,3.10645,2.40039,3.10645S92.76027,27.93164,92.76027,25.96973Z" style="fill: #fff"/>
|
|
23
|
+
<path d="M96.18606,21.44238h1.77246v1.541h.043a2.1594,2.1594,0,0,1,2.17773-1.63574,2.86616,2.86616,0,0,1,.63672.06934v1.73828a2.59794,2.59794,0,0,0-.835-.1123,1.87264,1.87264,0,0,0-1.93652,2.083v5.37012h-1.8584Z" style="fill: #fff"/>
|
|
24
|
+
<path d="M109.3843,27.83691c-.25,1.64355-1.85059,2.77148-3.89844,2.77148-2.63379,0-4.26855-1.76465-4.26855-4.5957,0-2.83984,1.64355-4.68164,4.19043-4.68164,2.50488,0,4.08008,1.7207,4.08008,4.46582v.63672h-6.39453v.1123a2.358,2.358,0,0,0,2.43555,2.56445,2.04834,2.04834,0,0,0,2.09082-1.27344Zm-6.28223-2.70215h4.52637a2.1773,2.1773,0,0,0-2.2207-2.29785A2.292,2.292,0,0,0,103.10207,25.13477Z" style="fill: #fff"/>
|
|
25
|
+
</g>
|
|
26
|
+
</g>
|
|
27
|
+
</g>
|
|
28
|
+
<g id="_Group_4" data-name="<Group>">
|
|
29
|
+
<g>
|
|
30
|
+
<path d="M37.82619,8.731a2.63964,2.63964,0,0,1,2.80762,2.96484c0,1.90625-1.03027,3.002-2.80762,3.002H35.67092V8.731Zm-1.22852,5.123h1.125a1.87588,1.87588,0,0,0,1.96777-2.146,1.881,1.881,0,0,0-1.96777-2.13379h-1.125Z" style="fill: #fff"/>
|
|
31
|
+
<path d="M41.68068,12.44434a2.13323,2.13323,0,1,1,4.24707,0,2.13358,2.13358,0,1,1-4.24707,0Zm3.333,0c0-.97607-.43848-1.54687-1.208-1.54687-.77246,0-1.207.5708-1.207,1.54688,0,.98389.43457,1.55029,1.207,1.55029C44.57522,13.99463,45.01369,13.42432,45.01369,12.44434Z" style="fill: #fff"/>
|
|
32
|
+
<path d="M51.57326,14.69775h-.92187l-.93066-3.31641h-.07031l-.92676,3.31641h-.91309l-1.24121-4.50293h.90137l.80664,3.436h.06641l.92578-3.436h.85254l.92578,3.436h.07031l.80273-3.436h.88867Z" style="fill: #fff"/>
|
|
33
|
+
<path d="M53.85354,10.19482H54.709v.71533h.06641a1.348,1.348,0,0,1,1.34375-.80225,1.46456,1.46456,0,0,1,1.55859,1.6748v2.915h-.88867V12.00586c0-.72363-.31445-1.0835-.97168-1.0835a1.03294,1.03294,0,0,0-1.0752,1.14111v2.63428h-.88867Z" style="fill: #fff"/>
|
|
34
|
+
<path d="M59.09377,8.437h.88867v6.26074h-.88867Z" style="fill: #fff"/>
|
|
35
|
+
<path d="M61.21779,12.44434a2.13346,2.13346,0,1,1,4.24756,0,2.1338,2.1338,0,1,1-4.24756,0Zm3.333,0c0-.97607-.43848-1.54687-1.208-1.54687-.77246,0-1.207.5708-1.207,1.54688,0,.98389.43457,1.55029,1.207,1.55029C64.11232,13.99463,64.5508,13.42432,64.5508,12.44434Z" style="fill: #fff"/>
|
|
36
|
+
<path d="M66.4009,13.42432c0-.81055.60352-1.27783,1.6748-1.34424l1.21973-.07031v-.38867c0-.47559-.31445-.74414-.92187-.74414-.49609,0-.83984.18213-.93848.50049h-.86035c.09082-.77344.81836-1.26953,1.83984-1.26953,1.12891,0,1.76563.562,1.76563,1.51318v3.07666h-.85547v-.63281h-.07031a1.515,1.515,0,0,1-1.35254.707A1.36026,1.36026,0,0,1,66.4009,13.42432Zm2.89453-.38477v-.37646l-1.09961.07031c-.62012.0415-.90137.25244-.90137.64941,0,.40527.35156.64111.835.64111A1.0615,1.0615,0,0,0,69.29543,13.03955Z" style="fill: #fff"/>
|
|
37
|
+
<path d="M71.34816,12.44434c0-1.42285.73145-2.32422,1.86914-2.32422a1.484,1.484,0,0,1,1.38086.79h.06641V8.437h.88867v6.26074h-.85156v-.71143h-.07031a1.56284,1.56284,0,0,1-1.41406.78564C72.0718,14.772,71.34816,13.87061,71.34816,12.44434Zm.918,0c0,.95508.4502,1.52979,1.20313,1.52979.749,0,1.21191-.583,1.21191-1.52588,0-.93848-.46777-1.52979-1.21191-1.52979C72.72121,10.91846,72.26613,11.49707,72.26613,12.44434Z" style="fill: #fff"/>
|
|
38
|
+
<path d="M79.23,12.44434a2.13323,2.13323,0,1,1,4.24707,0,2.13358,2.13358,0,1,1-4.24707,0Zm3.333,0c0-.97607-.43848-1.54687-1.208-1.54687-.77246,0-1.207.5708-1.207,1.54688,0,.98389.43457,1.55029,1.207,1.55029C82.12453,13.99463,82.563,13.42432,82.563,12.44434Z" style="fill: #fff"/>
|
|
39
|
+
<path d="M84.66945,10.19482h.85547v.71533h.06641a1.348,1.348,0,0,1,1.34375-.80225,1.46456,1.46456,0,0,1,1.55859,1.6748v2.915H87.605V12.00586c0-.72363-.31445-1.0835-.97168-1.0835a1.03294,1.03294,0,0,0-1.0752,1.14111v2.63428h-.88867Z" style="fill: #fff"/>
|
|
40
|
+
<path d="M93.51516,9.07373v1.1416h.97559v.74854h-.97559V13.2793c0,.47168.19434.67822.63672.67822a2.96657,2.96657,0,0,0,.33887-.02051v.74023a2.9155,2.9155,0,0,1-.4834.04541c-.98828,0-1.38184-.34766-1.38184-1.21582v-2.543h-.71484v-.74854h.71484V9.07373Z" style="fill: #fff"/>
|
|
41
|
+
<path d="M95.70461,8.437h.88086v2.48145h.07031a1.3856,1.3856,0,0,1,1.373-.80664,1.48339,1.48339,0,0,1,1.55078,1.67871v2.90723H98.69v-2.688c0-.71924-.335-1.0835-.96289-1.0835a1.05194,1.05194,0,0,0-1.13379,1.1416v2.62988h-.88867Z" style="fill: #fff"/>
|
|
42
|
+
<path d="M104.76125,13.48193a1.828,1.828,0,0,1-1.95117,1.30273A2.04531,2.04531,0,0,1,100.73,12.46045a2.07685,2.07685,0,0,1,2.07617-2.35254c1.25293,0,2.00879.856,2.00879,2.27V12.688h-3.17969v.0498a1.1902,1.1902,0,0,0,1.19922,1.29,1.07934,1.07934,0,0,0,1.07129-.5459Zm-3.126-1.45117h2.27441a1.08647,1.08647,0,0,0-1.1084-1.1665A1.15162,1.15162,0,0,0,101.63527,12.03076Z" style="fill: #fff"/>
|
|
43
|
+
</g>
|
|
44
|
+
</g>
|
|
45
|
+
</g>
|
|
46
|
+
</svg>
|
|
Binary file
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-0.17 0.23 87.33 100.54" role="img" aria-label="Pulse">
|
|
2
|
+
<title>Pulse</title>
|
|
3
|
+
<defs>
|
|
4
|
+
<mask id="pulse-logo-shape" maskUnits="userSpaceOnUse" x="-0.17" y="0.23" width="87.33" height="100.54">
|
|
5
|
+
<g stroke="#fff" stroke-width="39.04" stroke-linecap="round"><line x1="23.77" y1="42.33" x2="67.65" y2="19.75"/><line x1="63.23" y1="58.67" x2="19.35" y2="81.25"/></g>
|
|
6
|
+
<path fill="#000" d="M34.82 26.7C35.36 26.55 36.15 26.6 36.64 26.65C37.13 26.71 37.41 26.83 37.75 27.04C38.09 27.26 38.41 27.53 38.69 27.94C38.96 28.34 38.2 23.63 39.41 29.47C40.62 35.31 44.8 57.44 45.93 62.98C47.06 68.52 45.29 65.47 46.17 62.72C47.06 59.96 50.22 49.43 51.22 46.43C52.22 43.43 51.85 45.14 52.18 44.73C52.52 44.31 52.79 44.1 53.25 43.96C53.71 43.81 54.4 43.76 54.93 43.86C55.46 43.97 56.01 44.28 56.44 44.6C56.87 44.92 56.89 44.93 57.5 45.8C58.1 46.66 59.45 48.95 60.1 49.78C60.74 50.61 60.92 50.55 61.37 50.76C61.81 50.97 61.44 51 62.75 51.04C64.06 51.08 67.91 50.91 69.23 50.98C70.55 51.05 70.25 51.19 70.66 51.47C71.06 51.74 71.47 52.24 71.66 52.63C71.86 53.02 71.85 53.45 71.84 53.81C71.83 54.17 71.73 54.51 71.6 54.81C71.47 55.1 71.29 55.36 71.05 55.59C70.81 55.82 70.63 56.02 70.14 56.18C69.65 56.34 69.37 56.48 68.08 56.54C66.79 56.6 63.7 56.59 62.42 56.54C61.14 56.49 61.02 56.4 60.39 56.23C59.77 56.07 59.21 55.86 58.67 55.54C58.12 55.23 57.66 54.88 57.13 54.33C56.59 53.78 55.8 52.61 55.46 52.25C55.12 51.89 56.03 49.63 55.08 52.17C54.13 54.71 50.9 64.29 49.78 67.49C48.67 70.69 48.74 70.51 48.39 71.35C48.04 72.19 47.91 72.22 47.65 72.53C47.4 72.84 47.14 73.05 46.84 73.21C46.53 73.38 46.18 73.5 45.82 73.52C45.45 73.55 45.03 73.52 44.66 73.38C44.3 73.23 43.92 72.96 43.63 72.67C43.33 72.37 43.22 72.43 42.92 71.63C42.61 70.82 43.02 73.5 41.81 67.82C40.6 62.13 37.38 40.08 35.64 37.51C33.91 34.94 32.23 49.64 31.38 52.42C30.52 55.19 30.87 53.67 30.53 54.16C30.2 54.65 29.78 55.05 29.39 55.35C29 55.65 28.69 55.8 28.17 55.96C27.66 56.13 28.05 56.27 26.29 56.33C24.53 56.4 19.47 56.42 17.62 56.34C15.77 56.25 15.75 56 15.22 55.82C14.69 55.64 14.69 55.49 14.46 55.25C14.23 55.01 13.98 54.66 13.85 54.36C13.73 54.05 13.7 53.75 13.71 53.42C13.72 53.09 13.79 52.68 13.92 52.38C14.04 52.07 14.22 51.82 14.47 51.59C14.71 51.37 14.94 51.17 15.4 51.03C15.87 50.88 15.67 50.75 17.25 50.71C18.83 50.67 23.5 50.79 24.89 50.77C26.29 50.75 25.41 50.71 25.64 50.6C25.87 50.48 25.99 50.61 26.27 50.06C26.55 49.51 26.29 50.74 27.33 47.28C28.36 43.83 31.45 32.63 32.47 29.35C33.49 26.06 33.04 28 33.43 27.55C33.82 27.11 34.29 26.85 34.82 26.7Z"/>
|
|
7
|
+
</mask>
|
|
8
|
+
</defs>
|
|
9
|
+
<rect x="-0.17" y="0.23" width="87.33" height="100.54" fill="currentColor" mask="url(#pulse-logo-shape)"/>
|
|
10
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-0.17 0.23 87.33 100.54" role="img" aria-label="Pulse">
|
|
2
|
+
<title>Pulse</title>
|
|
3
|
+
<defs>
|
|
4
|
+
<linearGradient id="pulse-logo-red" gradientUnits="userSpaceOnUse" x1="0" y1="0.23" x2="0" y2="100.77">
|
|
5
|
+
<stop offset="0" stop-color="#FA7465"/>
|
|
6
|
+
<stop offset="1" stop-color="#A6100D"/>
|
|
7
|
+
</linearGradient>
|
|
8
|
+
<mask id="pulse-logo-shape" maskUnits="userSpaceOnUse" x="-0.17" y="0.23" width="87.33" height="100.54">
|
|
9
|
+
<g stroke="#fff" stroke-width="39.04" stroke-linecap="round"><line x1="23.77" y1="42.33" x2="67.65" y2="19.75"/><line x1="63.23" y1="58.67" x2="19.35" y2="81.25"/></g>
|
|
10
|
+
<path fill="#000" d="M34.82 26.7C35.36 26.55 36.15 26.6 36.64 26.65C37.13 26.71 37.41 26.83 37.75 27.04C38.09 27.26 38.41 27.53 38.69 27.94C38.96 28.34 38.2 23.63 39.41 29.47C40.62 35.31 44.8 57.44 45.93 62.98C47.06 68.52 45.29 65.47 46.17 62.72C47.06 59.96 50.22 49.43 51.22 46.43C52.22 43.43 51.85 45.14 52.18 44.73C52.52 44.31 52.79 44.1 53.25 43.96C53.71 43.81 54.4 43.76 54.93 43.86C55.46 43.97 56.01 44.28 56.44 44.6C56.87 44.92 56.89 44.93 57.5 45.8C58.1 46.66 59.45 48.95 60.1 49.78C60.74 50.61 60.92 50.55 61.37 50.76C61.81 50.97 61.44 51 62.75 51.04C64.06 51.08 67.91 50.91 69.23 50.98C70.55 51.05 70.25 51.19 70.66 51.47C71.06 51.74 71.47 52.24 71.66 52.63C71.86 53.02 71.85 53.45 71.84 53.81C71.83 54.17 71.73 54.51 71.6 54.81C71.47 55.1 71.29 55.36 71.05 55.59C70.81 55.82 70.63 56.02 70.14 56.18C69.65 56.34 69.37 56.48 68.08 56.54C66.79 56.6 63.7 56.59 62.42 56.54C61.14 56.49 61.02 56.4 60.39 56.23C59.77 56.07 59.21 55.86 58.67 55.54C58.12 55.23 57.66 54.88 57.13 54.33C56.59 53.78 55.8 52.61 55.46 52.25C55.12 51.89 56.03 49.63 55.08 52.17C54.13 54.71 50.9 64.29 49.78 67.49C48.67 70.69 48.74 70.51 48.39 71.35C48.04 72.19 47.91 72.22 47.65 72.53C47.4 72.84 47.14 73.05 46.84 73.21C46.53 73.38 46.18 73.5 45.82 73.52C45.45 73.55 45.03 73.52 44.66 73.38C44.3 73.23 43.92 72.96 43.63 72.67C43.33 72.37 43.22 72.43 42.92 71.63C42.61 70.82 43.02 73.5 41.81 67.82C40.6 62.13 37.38 40.08 35.64 37.51C33.91 34.94 32.23 49.64 31.38 52.42C30.52 55.19 30.87 53.67 30.53 54.16C30.2 54.65 29.78 55.05 29.39 55.35C29 55.65 28.69 55.8 28.17 55.96C27.66 56.13 28.05 56.27 26.29 56.33C24.53 56.4 19.47 56.42 17.62 56.34C15.77 56.25 15.75 56 15.22 55.82C14.69 55.64 14.69 55.49 14.46 55.25C14.23 55.01 13.98 54.66 13.85 54.36C13.73 54.05 13.7 53.75 13.71 53.42C13.72 53.09 13.79 52.68 13.92 52.38C14.04 52.07 14.22 51.82 14.47 51.59C14.71 51.37 14.94 51.17 15.4 51.03C15.87 50.88 15.67 50.75 17.25 50.71C18.83 50.67 23.5 50.79 24.89 50.77C26.29 50.75 25.41 50.71 25.64 50.6C25.87 50.48 25.99 50.61 26.27 50.06C26.55 49.51 26.29 50.74 27.33 47.28C28.36 43.83 31.45 32.63 32.47 29.35C33.49 26.06 33.04 28 33.43 27.55C33.82 27.11 34.29 26.85 34.82 26.7Z"/>
|
|
11
|
+
</mask>
|
|
12
|
+
</defs>
|
|
13
|
+
<rect x="-0.17" y="0.23" width="87.33" height="100.54" fill="url(#pulse-logo-red)" mask="url(#pulse-logo-shape)"/>
|
|
14
|
+
</svg>
|
package/dist/app.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { type PulseVaultAuthorize } from './routes/pulsevault.js';
|
|
|
3
3
|
import type { PulseVaultOnUploadComplete, PulseVaultOnArtifactEvent } from './lib/pulsevaultTus.js';
|
|
4
4
|
import type { PulseVaultValidatePayload } from './lib/magic.js';
|
|
5
5
|
import type { PulseVaultIssueViewLink } from './lib/view-links.js';
|
|
6
|
+
import type { PulseVaultReplayOptions, PulseVaultWebReadyOptions } from './lib/completion.js';
|
|
6
7
|
import { type PulseVaultRetentionOptions } from './lib/retention.js';
|
|
7
8
|
import type { PulseVaultStorage } from './storage/types.js';
|
|
8
9
|
import { type PulseVaultAllowedExtensionsInput } from './lib/options.js';
|
|
@@ -142,6 +143,23 @@ export type PulseVaultPluginOptions = {
|
|
|
142
143
|
* `sweepAbandonedUploads` from a cron job.
|
|
143
144
|
*/
|
|
144
145
|
retention?: PulseVaultRetentionOptions;
|
|
146
|
+
/** See the core's option of the same name: hold every create to the shape of a pulse. Defaults to `true`. */
|
|
147
|
+
pulseShape?: boolean;
|
|
148
|
+
/** See the core's option of the same name: a create takes over an idle unfinished upload of the same id. Defaults to `{ idleSeconds: 300 }`. */
|
|
149
|
+
reclaim?: {
|
|
150
|
+
idleSeconds?: number;
|
|
151
|
+
} | false;
|
|
152
|
+
/** See the core's option of the same name: a finished artifact can't be deleted through the routes. */
|
|
153
|
+
lockWhenReady?: boolean;
|
|
154
|
+
/** See the core's option of the same name: background web-ready conversion of finished videos. */
|
|
155
|
+
webReady?: PulseVaultWebReadyOptions | boolean;
|
|
156
|
+
/** See the core's option of the same name: re-fire `onUploadComplete` for completions the host never finished. */
|
|
157
|
+
replayCompletions?: PulseVaultReplayOptions | false;
|
|
158
|
+
/**
|
|
159
|
+
* Name of the decorator that exposes the core (`fastify.<name>.getStatus`, `.getPulse`,
|
|
160
|
+
* `.recordOutcome`, `.replayCompletions`). Defaults to `"pulseVaultCore"`.
|
|
161
|
+
*/
|
|
162
|
+
coreDecoratorName?: string;
|
|
145
163
|
/**
|
|
146
164
|
* @deprecated Use `validatePayload` instead — it now receives `ctx.kind`
|
|
147
165
|
* and runs for every artifact kind, including `"project"`. Still honored
|
|
@@ -183,4 +201,10 @@ export type { PulseVaultIssueViewLink, PulseVaultViewLink, PulseVaultViewLinkCon
|
|
|
183
201
|
export { createChecksumValidator, createS3ChecksumValidator, parseChecksumMetadata, } from './lib/checksum.js';
|
|
184
202
|
export type { ChecksumAlgorithm, ParsedChecksum } from './lib/checksum.js';
|
|
185
203
|
export type { PulseVaultRequest, PulseVaultLogger } from './lib/request.js';
|
|
204
|
+
export type { PulseVaultCore, PulseVaultArtifactStatus, PulseVaultPulse, } from './core.js';
|
|
205
|
+
export type { PulseVaultArtifactMeta, PulseVaultArtifactPatch, } from './storage/types.js';
|
|
206
|
+
export type { PulseVaultAuthorizeResult } from './lib/authorize.js';
|
|
207
|
+
export type { PulseVaultUploadCompleteContext } from './lib/pulsevaultTus.js';
|
|
208
|
+
export type { PulseVaultWebReadyOptions, PulseVaultReplayOptions } from './lib/completion.js';
|
|
209
|
+
export { MAX_CONTEXT_BYTES } from './lib/capability-token.js';
|
|
186
210
|
//# sourceMappingURL=app.d.ts.map
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,OAAyB,EAAE,KAAK,mBAAmB,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/app.js
CHANGED
|
@@ -3,6 +3,7 @@ import pulseVaultRoutes, {} from './routes/pulsevault.js';
|
|
|
3
3
|
import { startRetentionSweep, validateRetentionOptions, } from './lib/retention.js';
|
|
4
4
|
import { normalizeAllowedExtensions, validateBasePath, validateMaxUploadSize, rejectRemovedOptions, validateAllowedExtensions, warnIfUsingDeprecatedProjectHooks, composeValidatePayload, composeOnUploadComplete, } from './lib/options.js';
|
|
5
5
|
const DEFAULT_DECORATOR_NAME = 'pulseVault';
|
|
6
|
+
const DEFAULT_CORE_DECORATOR_NAME = 'pulseVaultCore';
|
|
6
7
|
const app = async (fastify, opts) => {
|
|
7
8
|
rejectRemovedOptions(opts);
|
|
8
9
|
validateBasePath(opts.prefix, 'prefix');
|
|
@@ -14,10 +15,15 @@ const app = async (fastify, opts) => {
|
|
|
14
15
|
// state the adapter allocates mid-init still gets cleaned up if Fastify
|
|
15
16
|
// later tears the plugin down.
|
|
16
17
|
let retentionSweep = null;
|
|
18
|
+
let core = null;
|
|
17
19
|
fastify.addHook('onClose', async () => {
|
|
18
|
-
// Waits for a sweep in progress, so it never runs against shut-down storage.
|
|
20
|
+
// Waits for a sweep in progress, so it never runs against shut-down storage. The core's
|
|
21
|
+
// shutdown stops its completion queue and replay timer (and shuts storage down itself).
|
|
19
22
|
await retentionSweep?.stop();
|
|
20
|
-
|
|
23
|
+
if (core)
|
|
24
|
+
await core.shutdown();
|
|
25
|
+
else
|
|
26
|
+
await opts.storage.shutdown?.();
|
|
21
27
|
});
|
|
22
28
|
await opts.storage.initialize?.();
|
|
23
29
|
if (opts.retention) {
|
|
@@ -40,7 +46,18 @@ const app = async (fastify, opts) => {
|
|
|
40
46
|
onUploadComplete: composeOnUploadComplete(opts.onUploadComplete, opts.onProjectUploadComplete),
|
|
41
47
|
onArtifactEvent: opts.onArtifactEvent,
|
|
42
48
|
issueViewLink: opts.issueViewLink,
|
|
49
|
+
pulseShape: opts.pulseShape,
|
|
50
|
+
reclaim: opts.reclaim,
|
|
51
|
+
lockWhenReady: opts.lockWhenReady,
|
|
52
|
+
webReady: opts.webReady,
|
|
53
|
+
replayCompletions: opts.replayCompletions,
|
|
54
|
+
onCore: (built) => {
|
|
55
|
+
core = built;
|
|
56
|
+
},
|
|
43
57
|
});
|
|
58
|
+
if (!core)
|
|
59
|
+
throw new Error('pulsevault: the routes plugin did not hand back its core');
|
|
60
|
+
fastify.decorate(opts.coreDecoratorName ?? DEFAULT_CORE_DECORATOR_NAME, core);
|
|
44
61
|
};
|
|
45
62
|
export default fp(app, {
|
|
46
63
|
name: 'pulsevault',
|
|
@@ -55,4 +72,5 @@ export { issueCapabilityToken, verifyCapabilityToken, issueViewToken, verifyView
|
|
|
55
72
|
export { createViewLinkIssuer } from './lib/view-links.js';
|
|
56
73
|
export { sweepAbandonedUploads } from './lib/retention.js';
|
|
57
74
|
export { createChecksumValidator, createS3ChecksumValidator, parseChecksumMetadata, } from './lib/checksum.js';
|
|
75
|
+
export { MAX_CONTEXT_BYTES } from './lib/capability-token.js';
|
|
58
76
|
//# sourceMappingURL=app.js.map
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAChC,OAAO,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/augment.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { PulseVaultStorage, UploadKind } from './storage/types.js';
|
|
2
|
+
import type { PulseVaultCore } from './core.js';
|
|
2
3
|
/**
|
|
3
4
|
* Opt-in TypeScript augmentation for the default `pulseVault` decorator and
|
|
4
5
|
* the per-request `request.pulseVault` context that the plugin sets when it
|
|
@@ -32,6 +33,8 @@ import type { PulseVaultStorage, UploadKind } from './storage/types.js';
|
|
|
32
33
|
declare module 'fastify' {
|
|
33
34
|
interface FastifyInstance {
|
|
34
35
|
pulseVault: PulseVaultStorage;
|
|
36
|
+
/** The core behind the routes: `getStatus`, `getPulse`, `recordOutcome`, `replayCompletions`. */
|
|
37
|
+
pulseVaultCore: PulseVaultCore;
|
|
35
38
|
}
|
|
36
39
|
interface FastifyRequest {
|
|
37
40
|
/**
|
package/dist/augment.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"augment.d.ts","sourceRoot":"","sources":["../src/augment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"augment.d.ts","sourceRoot":"","sources":["../src/augment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,eAAe;QACvB,UAAU,EAAE,iBAAiB,CAAC;QAC9B,iGAAiG;QACjG,cAAc,EAAE,cAAc,CAAC;KAChC;IACD,UAAU,cAAc;QACtB;;;;;;WAMG;QACH,UAAU,CAAC,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,UAAU,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC3E;CACF;AAED,OAAO,EAAE,CAAC"}
|
package/dist/augment.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"augment.js","sourceRoot":"","sources":["../src/augment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"augment.js","sourceRoot":"","sources":["../src/augment.ts"],"names":[],"mappings":"AAmDA,OAAO,EAAE,CAAC"}
|
package/dist/core.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
2
|
import { type PulseVaultOnUploadComplete, type PulseVaultOnArtifactEvent } from './lib/pulsevaultTus.js';
|
|
3
|
+
import { type PulseVaultReplayOptions, type PulseVaultWebReadyOptions } from './lib/completion.js';
|
|
3
4
|
import type { PulseVaultValidatePayload } from './lib/magic.js';
|
|
4
5
|
import type { PulseVaultAuthorize } from './lib/authorize.js';
|
|
5
6
|
import type { PulseVaultIssueViewLink } from './lib/view-links.js';
|
|
6
7
|
import { type PulseVaultRetentionOptions } from './lib/retention.js';
|
|
7
8
|
import { type PulseVaultLogger } from './lib/request.js';
|
|
8
|
-
import type { PulseVaultStorage } from './storage/types.js';
|
|
9
|
+
import type { PulseVaultArtifactMeta, PulseVaultStorage, UploadKind } from './storage/types.js';
|
|
9
10
|
import { type PulseVaultAllowedExtensionsInput } from './lib/options.js';
|
|
10
11
|
import { PROTOCOL_VERSION } from './lib/capabilities.js';
|
|
11
12
|
export { PROTOCOL_VERSION };
|
|
@@ -56,6 +57,44 @@ export type PulseVaultCoreOptions = {
|
|
|
56
57
|
issueViewLink?: PulseVaultIssueViewLink;
|
|
57
58
|
/** Optional cleanup of abandoned uploads. See the Fastify plugin's `retention` option for semantics. */
|
|
58
59
|
retention?: PulseVaultRetentionOptions;
|
|
60
|
+
/**
|
|
61
|
+
* Hold every create to the shape of a pulse (PROTOCOL.md §8): a video is created with no
|
|
62
|
+
* `relatedTo`, and a thumbnail, beat manifest or captions under its own id, `relatedTo` the
|
|
63
|
+
* video. With `createCapabilityAuthorize` the ids are also tied to the token: the video only
|
|
64
|
+
* under the token's own artifactId, the rest only `relatedTo` it. Defaults to `true`; set
|
|
65
|
+
* `false` for uploads that aren't pulses.
|
|
66
|
+
*/
|
|
67
|
+
pulseShape?: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Let a create take over an unfinished upload of the same artifactId once it has been idle
|
|
70
|
+
* this long, instead of answering `409` until `retention` removes it. Only an upload of the
|
|
71
|
+
* same kind and `relatedTo`, so the token that authorized the new create authorized the old
|
|
72
|
+
* one. Defaults to `{ idleSeconds: 300 }`; `false` turns it off.
|
|
73
|
+
*/
|
|
74
|
+
reclaim?: {
|
|
75
|
+
idleSeconds?: number;
|
|
76
|
+
} | false;
|
|
77
|
+
/**
|
|
78
|
+
* Once an artifact is finished, refuse to delete it — or anything `relatedTo` a finished
|
|
79
|
+
* video — through the routes (`DELETE /artifacts/:id` and the TUS `DELETE`): a pulse that
|
|
80
|
+
* landed stays. Removal then goes through `storage.remove` on the host's own terms. Off by
|
|
81
|
+
* default.
|
|
82
|
+
*/
|
|
83
|
+
lockWhenReady?: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Convert every finished video for the web in the background (faststart remux, or an H.264
|
|
86
|
+
* transcode for a codec browsers can't play), after the final `PATCH` is answered. `true`
|
|
87
|
+
* for the defaults, or `ensureWebReady`'s options plus `concurrency` and `completeAfter`.
|
|
88
|
+
* Needs the local storage adapter. Off by default.
|
|
89
|
+
*/
|
|
90
|
+
webReady?: PulseVaultWebReadyOptions | boolean;
|
|
91
|
+
/**
|
|
92
|
+
* How often a finished artifact whose `onUploadComplete` never finished is fired again, and a
|
|
93
|
+
* conversion a restart interrupted is resumed. On by default, every 300 seconds, with the
|
|
94
|
+
* first pass shortly after start; `false` turns it off. Needs `listArtifacts` and
|
|
95
|
+
* `describeArtifact` (both built-in adapters).
|
|
96
|
+
*/
|
|
97
|
+
replayCompletions?: PulseVaultReplayOptions | false;
|
|
59
98
|
/** Logger for internal diagnostics (authorize rejections, tus handler failures). Defaults to `console`. */
|
|
60
99
|
logger?: PulseVaultLogger;
|
|
61
100
|
/** @deprecated Use `validatePayload` instead — see the Fastify plugin's option of the same name. */
|
|
@@ -85,6 +124,51 @@ export type PulseVaultCore = {
|
|
|
85
124
|
handleViewLink: (req: IncomingMessage, res: ServerResponse, artifactId: string) => Promise<void>;
|
|
86
125
|
/** Handles `DELETE /artifacts/:artifactId`. */
|
|
87
126
|
handleArtifactDelete: (req: IncomingMessage, res: ServerResponse, artifactId: string) => Promise<void>;
|
|
127
|
+
/** Handles `GET /artifacts/:artifactId/status` (authorized as `status`). */
|
|
128
|
+
handleStatus: (req: IncomingMessage, res: ServerResponse, artifactId: string, token: string | undefined) => Promise<void>;
|
|
129
|
+
/** Handles `GET /artifacts/:artifactId/poster`: the video's thumbnail (authorized as `resolve` on the video). */
|
|
130
|
+
handlePoster: (req: IncomingMessage, res: ServerResponse, artifactId: string, token: string | undefined) => Promise<void>;
|
|
131
|
+
/** The state of one artifact, as the status route reports it — for a host that polls server-side. */
|
|
132
|
+
getStatus: (artifactId: string) => Promise<PulseVaultArtifactStatus>;
|
|
133
|
+
/** A video and the finished artifacts `relatedTo` it, by kind. `video` is `null` for an unknown id. */
|
|
134
|
+
getPulse: (artifactId: string) => Promise<PulseVaultPulse>;
|
|
135
|
+
/**
|
|
136
|
+
* Record where an upload went, or why it didn't (any JSON; `null` clears it). Reported by the
|
|
137
|
+
* status route as `outcome`, so a page waiting on an upload learns it from PulseVault alone.
|
|
138
|
+
* Resolves `false` for an unknown artifactId.
|
|
139
|
+
*/
|
|
140
|
+
recordOutcome: (artifactId: string, outcome: unknown) => Promise<boolean>;
|
|
141
|
+
/** Run one completion-replay pass now (see `replayCompletions`). Resolves the replayed artifactIds. */
|
|
142
|
+
replayCompletions: () => Promise<string[]>;
|
|
143
|
+
};
|
|
144
|
+
/** What `GET /artifacts/:id/status` and `getStatus` report. */
|
|
145
|
+
export type PulseVaultArtifactStatus = {
|
|
146
|
+
artifactId: string;
|
|
147
|
+
/**
|
|
148
|
+
* `unknown` for an id storage has never seen; `uploading` until the final byte; `processing`
|
|
149
|
+
* while a web-ready conversion rewrites the bytes; `ready` once the artifact is served.
|
|
150
|
+
*/
|
|
151
|
+
state: 'unknown' | 'uploading' | 'processing' | 'ready';
|
|
152
|
+
kind?: UploadKind;
|
|
153
|
+
relatedTo?: string;
|
|
154
|
+
name?: string;
|
|
155
|
+
/** Bytes received so far (while `uploading`), or stored (once finished), when known. */
|
|
156
|
+
bytesReceived?: number;
|
|
157
|
+
/** The upload's declared length, when known. */
|
|
158
|
+
size?: number;
|
|
159
|
+
/** Whether the host's `onUploadComplete` has finished for this artifact. */
|
|
160
|
+
acknowledged?: boolean;
|
|
161
|
+
/** What the host recorded with `recordOutcome`, if anything. */
|
|
162
|
+
outcome?: unknown;
|
|
163
|
+
/** The capability token's context (`getStatus` only; the status route leaves it out). */
|
|
164
|
+
context?: unknown;
|
|
165
|
+
};
|
|
166
|
+
/** A pulse: its video and the finished artifacts `relatedTo` it, one per kind (the newest wins). */
|
|
167
|
+
export type PulseVaultPulse = {
|
|
168
|
+
video: PulseVaultArtifactMeta | null;
|
|
169
|
+
thumbnail?: PulseVaultArtifactMeta;
|
|
170
|
+
captions?: PulseVaultArtifactMeta;
|
|
171
|
+
manifest?: PulseVaultArtifactMeta;
|
|
88
172
|
};
|
|
89
173
|
/**
|
|
90
174
|
* Build the framework-agnostic core: the same authorize/validatePayload/
|
|
@@ -99,9 +183,10 @@ export { createLocalStorage } from './storage/local.js';
|
|
|
99
183
|
export type { LocalStorage, LocalStorageOptions } from './storage/local.js';
|
|
100
184
|
export { createS3Storage } from './storage/s3.js';
|
|
101
185
|
export type { S3Storage, S3StorageOptions } from './storage/s3.js';
|
|
102
|
-
export type { PulseVaultArtifactRecord, PulseVaultResolution, PulseVaultStorage, ReserveUploadParams, UploadKind, } from './storage/types.js';
|
|
103
|
-
export type { PulseVaultAuthorize, PulseVaultAuthorizeContext, PulseVaultAuthorizePhase, } from './lib/authorize.js';
|
|
104
|
-
export type { PulseVaultOnUploadComplete, PulseVaultOnArtifactEvent, PulseVaultArtifactEvent, } from './lib/pulsevaultTus.js';
|
|
186
|
+
export type { PulseVaultArtifactMeta, PulseVaultArtifactPatch, PulseVaultArtifactRecord, PulseVaultResolution, PulseVaultStorage, ReserveUploadParams, UploadKind, } from './storage/types.js';
|
|
187
|
+
export type { PulseVaultAuthorize, PulseVaultAuthorizeContext, PulseVaultAuthorizePhase, PulseVaultAuthorizeResult, } from './lib/authorize.js';
|
|
188
|
+
export type { PulseVaultOnUploadComplete, PulseVaultUploadCompleteContext, PulseVaultOnArtifactEvent, PulseVaultArtifactEvent, } from './lib/pulsevaultTus.js';
|
|
189
|
+
export type { PulseVaultWebReadyOptions, PulseVaultReplayOptions } from './lib/completion.js';
|
|
105
190
|
export { sniffMp4, createMp4Sniffer, createS3Mp4Sniffer } from './lib/magic.js';
|
|
106
191
|
export type { PulseVaultValidatePayload } from './lib/magic.js';
|
|
107
192
|
export { ensureWebReady, scanMoovPosition } from './lib/web-ready.js';
|
package/dist/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,EAKL,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC/B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EACL,KAAK,0BAA0B,EAGhC,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,KAAK,gBAAgB,EAAiB,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EACV,sBAAsB,EAEtB,iBAAiB,EACjB,UAAU,EACX,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EASL,KAAK,gCAAgC,EACtC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAqB,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG5E,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,MAAM,MAAM,0BAA0B,GAAG;IACvC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,wFAAwF;IACxF,OAAO,EAAE,iBAAiB,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iHAAiH;IACjH,aAAa,EAAE,MAAM,CAAC;IACtB,kHAAkH;IAClH,iBAAiB,CAAC,EAAE,gCAAgC,CAAC;IACrD,4EAA4E;IAC5E,KAAK,CAAC,EAAE,0BAA0B,CAAC;IACnC,8FAA8F;IAC9F,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,yGAAyG;IACzG,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C,mGAAmG;IACnG,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;IAC9C,0GAA0G;IAC1G,eAAe,CAAC,EAAE,yBAAyB,CAAC;IAC5C,oGAAoG;IACpG,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,wGAAwG;IACxG,SAAS,CAAC,EAAE,0BAA0B,CAAC;IACvC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IAC3C;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC;IAC/C;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,uBAAuB,GAAG,KAAK,CAAC;IACpD,2GAA2G;IAC3G,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,oGAAoG;IACpG,sBAAsB,CAAC,EAAE,yBAAyB,CAAC;IACnD,qGAAqG;IACrG,uBAAuB,CAAC,EAAE,0BAA0B,CAAC;CACtD,CAAC;AAEF,KAAK,WAAW,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;AAE3C,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1F,0FAA0F;IAC1F,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,4FAA4F;IAC5F,SAAS,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,mDAAmD;IACnD,kBAAkB,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,mEAAmE;IACnE,iBAAiB,EAAE,CACjB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GAAG,SAAS,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,kGAAkG;IAClG,cAAc,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjG,+CAA+C;IAC/C,oBAAoB,EAAE,CACpB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,4EAA4E;IAC5E,YAAY,EAAE,CACZ,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GAAG,SAAS,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,iHAAiH;IACjH,YAAY,EAAE,CACZ,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GAAG,SAAS,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,qGAAqG;IACrG,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACrE,uGAAuG;IACvG,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3D;;;;OAIG;IACH,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,uGAAuG;IACvG,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC5C,CAAC;AAEF,+DAA+D;AAC/D,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,OAAO,CAAC;IACxD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yFAAyF;IACzF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,oGAAoG;AACpG,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CACnC,CAAC;AAkNF;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CAypBnF;AAKD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EACV,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,0BAA0B,EAC1B,+BAA+B,EAC/B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAChF,YAAY,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,qBAAqB,EACrB,2BAA2B,EAC3B,qBAAqB,EACrB,4BAA4B,EAC5B,YAAY,GACb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACrE,YAAY,EACV,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
|