@mieweb/pulsevault 0.4.0 → 0.4.2

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 CHANGED
@@ -7,6 +7,31 @@ breaking changes, called out explicitly below.
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.4.2] - 2026-10-02
11
+
12
+ ### Added
13
+
14
+ - **The Pulse logo and the store badges ship with the package**: the logo in
15
+ full colour and one colour (`assets/pulse-logo.svg`,
16
+ `assets/pulse-logo-mono.svg`), and the App Store and Google Play badges
17
+ (`assets/badge-app-store.svg`, `assets/badge-google-play.png`), exported as
18
+ `@mieweb/pulsevault/assets/*`. An app can put the logo on the button that
19
+ opens Pulse and link the badges to Pulse's listings. See `assets/README.md`.
20
+
21
+ ## [0.4.1] - 2026-09-30
22
+
23
+ ### Fixed
24
+
25
+ - **`@mieweb/pulsevault/core` loads under Meteor again.** 0.4.0 read the
26
+ protocol version from `package.json` at runtime with
27
+ `createRequire(import.meta.url)`. That's valid ESM for Node, but Meteor
28
+ compiles npm packages into its own module wrapper, which already declares
29
+ `require` and can't compile `import.meta`, so a Meteor app crashed at boot
30
+ (`SyntaxError: Identifier 'require' has already been declared`). `npm run
31
+ build` now writes the version into `src/lib/protocol-version.gen.ts`
32
+ (`scripts/gen-protocol-version.mjs`); `package.json` `pulseProtocol` is still
33
+ the one place it's set, and a missing or malformed value now fails the build.
34
+
10
35
  ## [0.4.0] - 2026-09-30
11
36
 
12
37
  Protocol 2.2 (`PROTOCOL.md` §7.4). Protocol 2 records the `uploadUnit`
@@ -386,7 +411,9 @@ if you've evaluated against an intermediate build.
386
411
  lock, so this is now at least surfaced: a one-time `console.warn` fires
387
412
  per process the first time a deployment falls into this degraded mode.
388
413
 
389
- [Unreleased]: https://github.com/mieweb/pulsevault/compare/v0.4.0...HEAD
414
+ [Unreleased]: https://github.com/mieweb/pulsevault/compare/v0.4.2...HEAD
415
+ [0.4.2]: https://github.com/mieweb/pulsevault/compare/v0.4.1...v0.4.2
416
+ [0.4.1]: https://github.com/mieweb/pulsevault/compare/v0.4.0...v0.4.1
390
417
  [0.4.0]: https://github.com/mieweb/pulsevault/compare/v0.3.0...v0.4.0
391
418
  [0.3.0]: https://github.com/mieweb/pulsevault/compare/v0.2.0...v0.3.0
392
419
  [0.2.0]: https://github.com/mieweb/pulsevault/compare/v0.0.1...v0.2.0
package/README.md CHANGED
@@ -822,6 +822,13 @@ const uploadLink = buildUploadLink({
822
822
  // pulsecam://?v=1&artifactId=...&server=https%3A%2F%2Fexample.com%2Fpulsevault&token=secret
823
823
  ```
824
824
 
825
+ ## Pulse logo and store badges
826
+
827
+ The package ships the Pulse logo for the button that opens Pulse
828
+ (`@mieweb/pulsevault/assets/pulse-logo.svg` in full colour,
829
+ `pulse-logo-mono.svg` in one colour), and the App Store and Google Play badges
830
+ to link to Pulse's listings. See [assets/README.md](assets/README.md).
831
+
825
832
  ## Tests
826
833
 
827
834
  ```sh
@@ -0,0 +1,33 @@
1
+ # Pulse assets
2
+
3
+ For any app that pairs with Pulse through PulseVault: the Pulse logo, to put
4
+ on the button that opens Pulse, and the store badges, to link people who
5
+ don't have Pulse yet to its listings.
6
+
7
+ | File | What it is |
8
+ | ----------------------- | ------------------------------------------------------------- |
9
+ | `pulse-logo.svg` | Full colour, the Pulse red gradient. Use it on light or dark. |
10
+ | `pulse-logo-mono.svg` | One colour, `currentColor` (black when used as an `<img>`). |
11
+ | `badge-app-store.svg` | Apple's "Download on the App Store" badge (black). |
12
+ | `badge-google-play.png` | Google's "Get it on Google Play" badge. |
13
+
14
+ The logos are 87 × 100 (width × height) and scale to any size. The heartbeat
15
+ is cut out, so whatever is behind the logo shows through it.
16
+
17
+ The badges are Apple's and Google's own artwork, used under their badge
18
+ guidelines: show them unaltered, at the same height side by side, and link
19
+ them to Pulse's listings:
20
+
21
+ - App Store: `https://apps.apple.com/us/app/pulse-cam/id6748621024`
22
+ - Google Play: `https://play.google.com/store/apps/details?id=com.mieweb.pulse`
23
+
24
+ They ship in the package, so a bundler can import them:
25
+
26
+ ```js
27
+ import pulseLogo from "@mieweb/pulsevault/assets/pulse-logo.svg";
28
+
29
+ button.innerHTML = `<img src="${pulseLogo}" alt="" width="14" height="16"> Record with Pulse`;
30
+ ```
31
+
32
+ Inline the mono file's markup to colour it with CSS `color`, or use it as a
33
+ CSS `mask-image` over any background.
@@ -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="&lt;Group&gt;">
10
+ <g id="_Group_2" data-name="&lt;Group&gt;">
11
+ <g id="_Group_3" data-name="&lt;Group&gt;">
12
+ <path id="_Path_" data-name="&lt;Path&gt;" 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="&lt;Path&gt;" 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="&lt;Group&gt;">
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>
@@ -0,0 +1,6 @@
1
+ export declare const PULSE_PROTOCOL: {
2
+ version: string;
3
+ min: number;
4
+ max: number;
5
+ };
6
+ //# sourceMappingURL=protocol-version.gen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-version.gen.d.ts","sourceRoot":"","sources":["../../src/lib/protocol-version.gen.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAIvE,CAAC"}
@@ -0,0 +1,8 @@
1
+ // GENERATED by scripts/gen-protocol-version.mjs from package.json `pulseProtocol`.
2
+ // Do not edit: change package.json, then run `npm run build`.
3
+ export const PULSE_PROTOCOL = {
4
+ version: '2.2',
5
+ min: 2,
6
+ max: 2,
7
+ };
8
+ //# sourceMappingURL=protocol-version.gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-version.gen.js","sourceRoot":"","sources":["../../src/lib/protocol-version.gen.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,8DAA8D;AAE9D,MAAM,CAAC,MAAM,cAAc,GAAkD;IAC3E,OAAO,EAAE,KAAK;IACd,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;CACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/lib/protocol.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAgBjD,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,QAAwB,CAAC;AACvD,uFAAuF;AACvF,eAAO,MAAM,gBAAgB,QAA0C,CAAC;AACxE,eAAO,MAAM,8BAA8B,QAAoB,CAAC;AAChE,eAAO,MAAM,8BAA8B,QAAoB,CAAC;AAUhE;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,WAAW,GAAG,IAAI,CAQzF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,eAAe,GACnB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAcpF;AAQD,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMxF"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/lib/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAgBjD,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,QAAwB,CAAC;AACvD,uFAAuF;AACvF,eAAO,MAAM,gBAAgB,QAA0C,CAAC;AACxE,eAAO,MAAM,8BAA8B,QAAoB,CAAC;AAChE,eAAO,MAAM,8BAA8B,QAAoB,CAAC;AAUhE;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,WAAW,GAAG,IAAI,CAQzF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,eAAe,GACnB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAcpF;AAQD,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMxF"}
@@ -1,6 +1,15 @@
1
- import { createRequire } from 'node:module';
2
- const require = createRequire(import.meta.url);
3
- const { pulseProtocol } = require('../../package.json');
1
+ import { PULSE_PROTOCOL as pulseProtocol } from './protocol-version.gen.js';
2
+ /*
3
+ * The protocol this release implements, from `package.json` `pulseProtocol` — the one place
4
+ * it's written down (PROTOCOL.md §7). npm keeps the field for every published version, so
5
+ * which release spoke which protocol can always be looked up. `npm run build` bakes it into
6
+ * `protocol-version.gen.ts` rather than reading package.json at runtime, which bundlers that
7
+ * wrap npm packages in their own module function (Meteor) can't compile.
8
+ *
9
+ * - `version` is the spec revision, `major.minor`. The major changes only for breaking changes
10
+ * and is what pairing compares; the minor counts additions older clients can ignore.
11
+ * - `min`/`max` are the protocol majors this release accepts from clients.
12
+ */
4
13
  /** Spec revision this release implements, e.g. `"2.1"`. */
5
14
  export const PROTOCOL_REVISION = pulseProtocol.version;
6
15
  /** Protocol major this release implements (the `Protocol-Version` response header). */
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/lib/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/lib/protocol.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,IAAI,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE5E;;;;;;;;;;GAUG;AAEH,2DAA2D;AAC3D,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,CAAC;AACvD,uFAAuF;AACvF,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,8BAA8B,GAAG,aAAa,CAAC,GAAG,CAAC;AAChE,MAAM,CAAC,MAAM,8BAA8B,GAAG,aAAa,CAAC,GAAG,CAAC;AAEhE,IACE,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACrC,8BAA8B,GAAG,gBAAgB;IACjD,8BAA8B,GAAG,gBAAgB,EACjD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAClG,CAAC;AAUD,MAAM,UAAU,gBAAgB,CAAC,KAAoC;IACnE,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IAC9D,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACzE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,GAAoB;IAEpB,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IAC7D,IAAI,MAAM,EAAE,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,IAAI,8BAA8B,EAAE,CAAC;QAC9F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GACT,8BAA8B,KAAK,8BAA8B;QAC/D,CAAC,CAAC,GAAG,8BAA8B,EAAE;QACrC,CAAC,CAAC,GAAG,8BAA8B,IAAI,8BAA8B,EAAE,CAAC;IAC5E,OAAO;QACL,KAAK,EAAE,0DAA0D,KAAK,iCAAiC;QACvG,mBAAmB,EAAE,8BAA8B;QACnD,mBAAmB,EAAE,8BAA8B;KACpD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC,oFAAoF;AACpF,MAAM,UAAU,mBAAmB,CAAC,KAAgC;IAClE,OAAO,CACL,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SAC7B,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC;SAChC,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,CACzB,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mieweb/pulsevault",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "Resumable video uploads via TUS for Fastify (plugin) or any Node backend (framework-agnostic core), with a pluggable storage adapter and a filesystem-first local-storage default.",
5
5
  "type": "module",
6
6
  "main": "./dist/app.js",
@@ -20,7 +20,8 @@
20
20
  "types": "./dist/core.d.ts",
21
21
  "import": "./dist/core.js",
22
22
  "default": "./dist/core.js"
23
- }
23
+ },
24
+ "./assets/*": "./assets/*"
24
25
  },
25
26
  "files": [
26
27
  "dist",
@@ -34,16 +35,17 @@
34
35
  "PROTOCOL.md",
35
36
  "OPERATIONS.md",
36
37
  "scripts/web-ready-migrate.mjs",
37
- "protocol"
38
+ "protocol",
39
+ "assets"
38
40
  ],
39
41
  "scripts": {
40
- "build": "tsc",
42
+ "build": "node scripts/gen-protocol-version.mjs && tsc",
41
43
  "prepublishOnly": "npm run build",
42
44
  "pretest": "npm run build",
43
45
  "test": "node --test test/*.test.mjs",
44
46
  "e2e": "npm run build && node scripts/e2e-tus.mjs",
45
47
  "protocol": "npm run build && node scripts/gen-protocol.mjs",
46
- "protocol:check": "npm run build && node scripts/gen-protocol.mjs --check",
48
+ "protocol:check": "node scripts/gen-protocol-version.mjs --check && npm run build && node scripts/gen-protocol.mjs --check",
47
49
  "protocol:compat": "node scripts/check-protocol.mjs"
48
50
  },
49
51
  "keywords": [