Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package asar for openSUSE:Factory checked in 
at 2023-09-21 22:13:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/asar (Old)
 and      /work/SRC/openSUSE:Factory/.asar.new.1770 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "asar"

Thu Sep 21 22:13:37 2023 rev:4 rq:1112369 version:3.2.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/asar/asar.changes        2023-01-18 
13:11:51.173091075 +0100
+++ /work/SRC/openSUSE:Factory/.asar.new.1770/asar.changes      2023-09-21 
22:14:26.682130787 +0200
@@ -1,0 +2,6 @@
+Tue Sep 19 17:12:27 UTC 2023 - Bruno Pitrus <brunopit...@hotmail.com>
+
+- New upstream version 3.2.5
+  * properly handle rejections on `createPackageWithOptions`
+
+-------------------------------------------------------------------

Old:
----
  v3.2.3.tar.gz
  vendor.tar.xz

New:
----
  v3.2.5.tar.gz
  vendor.tar.zst

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ asar.spec ++++++
--- /var/tmp/diff_new_pack.DCZ1Ex/_old  2023-09-21 22:14:27.990178261 +0200
+++ /var/tmp/diff_new_pack.DCZ1Ex/_new  2023-09-21 22:14:27.994178406 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           asar
-Version:        3.2.3
+Version:        3.2.5
 Release:        0
 Summary:        Creating atom-shell (electron) app packages
 License:        MIT and ISC
@@ -25,7 +25,7 @@
 Url:            https://github.com/electron/asar
 Source0:        
https://github.com/electron/asar/archive/refs/tags/v%{version}.tar.gz
 # Created by prepare-vendor.sh
-Source1:        vendor.tar.xz
+Source1:        vendor.tar.zst
 Source2:        prepare_vendor.sh
 
 BuildArch:      noarch
@@ -33,7 +33,12 @@
 BuildRequires:  fdupes
 BuildRequires:  jq
 BuildRequires:  nodejs-packaging
+%if 0%{?fedora} >= 37
+BuildRequires:  nodejs-npm
+%else
 BuildRequires:  npm
+%endif
+BuildRequires:  zstd
 
 %global __requires_exclude ^npm(.*)$
 Provides: nodejs-asar = %{version}
@@ -91,6 +96,6 @@
 %defattr(-,root,root)
 %doc CHANGELOG.md README.md
 %license LICENSE.md
-/usr/bin/asar
+%{_bindir}/asar
 %{nodejs_sitelib}
 

++++++ prepare_vendor.sh ++++++
--- /var/tmp/diff_new_pack.DCZ1Ex/_old  2023-09-21 22:14:28.026179567 +0200
+++ /var/tmp/diff_new_pack.DCZ1Ex/_new  2023-09-21 22:14:28.026179567 +0200
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/bash -x
 # shellcheck disable=2181
 
 ASAR_PKGDIR="$(pwd)"
@@ -41,7 +41,7 @@
 
 
 echo ">>>>>> Install npm modules"
-yarn install --pure-lockfile --ignore-engines --ignore-scripts --production
+yarn install --pure-lockfile --ignore-engines --ignore-scripts --production 
--link-duplicates
 ret=$?
 if [ $ret -ne 0 ]; then
     echo "ERROR: yarn install failed"
@@ -53,6 +53,7 @@
 find node_modules/ -name "*.wasm" -print -delete
 find node_modules/ -name "*.jar" -print -delete
 find node_modules/ -name "*.dll" -print -delete
+find node_modules/ -name "*.exe" -print -delete
 find node_modules/ -name "*.dylib" -print -delete
 find node_modules/ -name "*.so" -print -delete
 find node_modules/ -name "*.o" -print -delete
@@ -68,12 +69,12 @@
 
 
 echo ">>>>>> Package vendor files"
-rm -f "${ASAR_PKGDIR}/vendor.tar.xz"
-XZ_OPT="-T$(nproc) -e9 -vv" tar -vvJcf "${ASAR_PKGDIR}/vendor.tar.xz" 
node_modules
+rm -f "${SIGNAL_PKGDIR}/vendor.tar.zst"
+ZSTD_CLEVEL=19 ZSTD_NBTHREADS=$(nproc) tar --zstd --sort=name -vvScf 
"${ASAR_PKGDIR}/vendor.tar.zst" node_modules
 if [ $? -ne 0 ]; then
     cleanup_and_exit 1
 fi
-echo "vendor $(du -sh "${ASAR_PKGDIR}/vendor.tar.xz")"
+echo "vendor $(du -sh "${ASAR_PKGDIR}/vendor.tar.zst")"
 
 
 popd || cleanup_and_exit 1

++++++ v3.2.3.tar.gz -> v3.2.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asar-3.2.3/.circleci/config.yml 
new/asar-3.2.5/.circleci/config.yml
--- old/asar-3.2.3/.circleci/config.yml 2023-01-17 21:09:00.000000000 +0100
+++ new/asar-3.2.5/.circleci/config.yml 2023-09-19 02:25:17.000000000 +0200
@@ -1,64 +1,41 @@
-step-restore-cache: &step-restore-cache
-  restore_cache:
-    keys:
-      - v1-dependencies-{{ arch }}-{{ checksum "yarn.lock" }}
-      - v1-dependencies-{{ arch }}
-
-steps-test: &steps-test
-  steps:
-    - run:
-        name: Install Linux Dependencies
-        command: |
-          if [ "`uname`" == "Linux" ]; then
-            sudo apt-get update && sudo apt-get install 
--no-install-recommends -y libasound2 libgtk-3-0 libnss3 libxss1 libxtst6 xvfb 
libgbm-dev
-          fi
-    - checkout
-    - *step-restore-cache
-    - run: yarn install
-    - save_cache:
-        paths:
-          - node_modules
-        key: v1-dependencies-{{ arch }}-{{ checksum "yarn.lock" }}
-    - run: yarn test
-
-
 version: 2.1
+
 orbs:
   cfa: continuousauth/npm@1.0.2
-  win: circleci/windows@2.4.0
-jobs:
-  test-linux-14:
-    docker:
-      - image: cimg/node:14.19.3
-    <<: *steps-test
-  test-linux-16:
-    docker:
-      - image: cimg/node:16.15.0
-    <<: *steps-test
-  test-mac:
-    macos:
-      xcode: "13.3.0"
-    <<: *steps-test
-  test-windows:
-    executor:
-      name: win/default
-      shell: bash.exe
-    <<: *steps-test
+  node: electronjs/node@1.4.1
 
 workflows:
   test_and_release:
     # Run the test jobs first, then the release only when all the test jobs 
are successful
     jobs:
-      - test-linux-14
-      - test-linux-16
-      - test-mac
-      - test-windows
+      - node/test:
+          name: test-<< matrix.executor >>-<< matrix.node-version >>
+          pre-steps:
+            - when:
+                condition:
+                  equal: [ node/linux, << matrix.executor >> ]
+                steps:
+                  - run:
+                      name: Install Linux Dependencies
+                      command: |
+                        sudo apt-get update && sudo apt-get install 
--no-install-recommends -y libasound2 libgtk-3-0 libnss3 libxss1 libxtst6 xvfb 
libgbm-dev
+          matrix:
+            alias: test
+            parameters:
+              executor:
+                - node/linux
+                - node/macos
+                - node/windows
+              node-version:
+                # Don't bump above 20.2.0 until CircleCI updates
+                # their Windows image to pick up newer nvm-windows
+                - 20.2.0
+                - 18.17.0
+                - 16.20.1
+                - 14.21.3
       - cfa/release:
           requires:
-            - test-linux-14
-            - test-linux-16
-            - test-mac
-            - test-windows
+            - test
           filters:
             branches:
               only:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asar-3.2.3/.github/workflows/semantic.yml 
new/asar-3.2.5/.github/workflows/semantic.yml
--- old/asar-3.2.3/.github/workflows/semantic.yml       1970-01-01 
01:00:00.000000000 +0100
+++ new/asar-3.2.5/.github/workflows/semantic.yml       2023-09-19 
02:25:17.000000000 +0200
@@ -0,0 +1,26 @@
+name: "Check Semantic Commit"
+
+on:
+  pull_request:
+    types:
+      - opened
+      - edited
+      - synchronize
+
+permissions:
+  contents: read
+
+jobs:
+  main:
+    permissions:
+      pull-requests: read  # for amannn/action-semantic-pull-request to 
analyze PRs
+      statuses: write  # for amannn/action-semantic-pull-request to mark 
status of analyzed PR
+    name: Validate PR Title
+    runs-on: ubuntu-latest
+    steps:
+      - name: semantic-pull-request
+        uses: 
amannn/action-semantic-pull-request@c3cd5d1ea3580753008872425915e343e351ab54 # 
v5.2.0
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        with:
+          validateSingleCommit: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asar-3.2.3/.npmignore new/asar-3.2.5/.npmignore
--- old/asar-3.2.3/.npmignore   2023-01-17 21:09:00.000000000 +0100
+++ new/asar-3.2.5/.npmignore   1970-01-01 01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
-/build
-/spec
-/tmp
-*.coffee
-*.log
-*~
-*.swp
-.DS_Store
-.node-version
-.npmignore
-npm-debug.log
-/test
-.gitattributes
-appveyor.yml
-.travis.yml
-coffeelint.json
-.idea
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asar-3.2.3/README.md new/asar-3.2.5/README.md
--- old/asar-3.2.3/README.md    2023-01-17 21:09:00.000000000 +0100
+++ new/asar-3.2.5/README.md    2023-09-19 02:25:17.000000000 +0200
@@ -122,8 +122,7 @@
 
 ## Format
 
-Asar uses [Pickle][pickle] to safely serialize binary value to file, there is
-also a [node.js binding][node-pickle] of `Pickle` class.
+Asar uses [Pickle][pickle] to safely serialize binary value to file.
 
 The format of asar is very flat:
 
@@ -211,5 +210,4 @@
 * A integer value `blockSize` representing the size in bytes of each block in 
the `blocks` hashes above
 
 [pickle]: https://chromium.googlesource.com/chromium/src/+/main/base/pickle.h
-[node-pickle]: https://www.npmjs.org/package/chromium-pickle-js
 [grunt-asar]: https://github.com/bwin/grunt-asar
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asar-3.2.3/bin/asar.js new/asar-3.2.5/bin/asar.js
--- old/asar-3.2.3/bin/asar.js  2023-01-17 21:09:00.000000000 +0100
+++ new/asar-3.2.5/bin/asar.js  2023-09-19 02:25:17.000000000 +0200
@@ -35,11 +35,9 @@
       builddir: options.sb,
       dot: !options.excludeHidden
     }
-    asar.createPackageWithOptions(dir, output, options, function (error) {
-      if (error) {
-        console.error(error.stack)
-        process.exit(1)
-      }
+    asar.createPackageWithOptions(dir, output, options).catch(error => {
+      console.error(error)
+      process.exit(1)
     })
   })
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asar-3.2.3/lib/disk.js new/asar-3.2.5/lib/disk.js
--- old/asar-3.2.3/lib/disk.js  2023-01-17 21:09:00.000000000 +0100
+++ new/asar-3.2.5/lib/disk.js  2023-09-19 02:25:17.000000000 +0200
@@ -2,7 +2,7 @@
 
 const fs = require('./wrapped-fs')
 const path = require('path')
-const pickle = require('chromium-pickle-js')
+const pickle = require('./pickle')
 
 const Filesystem = require('./filesystem')
 let filesystemCache = {}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asar-3.2.3/lib/index.d.ts 
new/asar-3.2.5/lib/index.d.ts
--- old/asar-3.2.3/lib/index.d.ts       2023-01-17 21:09:00.000000000 +0100
+++ new/asar-3.2.5/lib/index.d.ts       2023-09-19 02:25:17.000000000 +0200
@@ -1,9 +1,169 @@
-import { IOptions as GlobOptions } from 'glob';
-import { Stats } from 'fs';
+import { Stats } from "fs";
+
+interface IMinimatchOptions {
+  /**
+   * Dump a ton of stuff to stderr.
+   *
+   * @default false
+   */
+  debug?: boolean | undefined;
+
+  /**
+   * Do not expand `{a,b}` and `{1..3}` brace sets.
+   *
+   * @default false
+   */
+  nobrace?: boolean | undefined;
+
+  /**
+   * Disable `**` matching against multiple folder names.
+   *
+   * @default false
+   */
+  noglobstar?: boolean | undefined;
+
+  /**
+   * Allow patterns to match filenames starting with a period,
+   * even if the pattern does not explicitly have a period in that spot.
+   *
+   * Note that by default, `'a/**' + '/b'` will **not** match `a/.d/b`, unless 
`dot` is set.
+   *
+   * @default false
+   */
+  dot?: boolean | undefined;
+
+  /**
+   * Disable "extglob" style patterns like `+(a|b)`.
+   *
+   * @default false
+   */
+  noext?: boolean | undefined;
+
+  /**
+   * Perform a case-insensitive match.
+   *
+   * @default false
+   */
+  nocase?: boolean | undefined;
+
+  /**
+   * When a match is not found by `minimatch.match`,
+   * return a list containing the pattern itself if this option is set.
+   * Otherwise, an empty list is returned if there are no matches.
+   *
+   * @default false
+   */
+  nonull?: boolean | undefined;
+
+  /**
+   * If set, then patterns without slashes will be matched
+   * against the basename of the path if it contains slashes. For example,
+   * `a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.
+   *
+   * @default false
+   */
+  matchBase?: boolean | undefined;
+
+  /**
+   * Suppress the behavior of treating `#` at the start of a pattern as a 
comment.
+   *
+   * @default false
+   */
+  nocomment?: boolean | undefined;
+
+  /**
+   * Suppress the behavior of treating a leading `!` character as negation.
+   *
+   * @default false
+   */
+  nonegate?: boolean | undefined;
+
+  /**
+   * Returns from negate expressions the same as if they were not negated.
+   * (Ie, true on a hit, false on a miss.)
+   *
+   * @default false
+   */
+  flipNegate?: boolean | undefined;
+
+  /**
+   * Compare a partial path to a pattern.  As long as the parts of the path 
that
+   * are present are not contradicted by the pattern, it will be treated as a
+   * match. This is useful in applications where you're walking through a
+   * folder structure, and don't yet have the full path, but want to ensure 
that
+   * you do not walk down paths that can never be a match.
+   *
+   * @default false
+   *
+   * @example
+   * import minimatch = require("minimatch");
+   *
+   * minimatch('/a/b', '/a/*' + '/c/d', { partial: true })  // true, might be 
/a/b/c/d
+   * minimatch('/a/b', '/**' + '/d', { partial: true })     // true, might be 
/a/b/.../d
+   * minimatch('/x/y/z', '/a/**' + '/z', { partial: true }) // false, because 
x !== a
+   */
+  partial?: boolean;
+
+  /**
+   * Use `\\` as a path separator _only_, and _never_ as an escape
+   * character. If set, all `\\` characters are replaced with `/` in
+   * the pattern. Note that this makes it **impossible** to match
+   * against paths containing literal glob pattern characters, but
+   * allows matching with patterns constructed using `path.join()` and
+   * `path.resolve()` on Windows platforms, mimicking the (buggy!)
+   * behavior of earlier versions on Windows. Please use with
+   * caution, and be mindful of the caveat about Windows paths
+   *
+   * For legacy reasons, this is also set if
+   * `options.allowWindowsEscape` is set to the exact value `false`.
+   *
+   * @default false
+   */
+  windowsPathsNoEscape?: boolean;
+}
+
+import fs = require("fs");
+interface IGlobOptions extends IMinimatchOptions {
+  cwd?: string | undefined;
+  root?: string | undefined;
+  dot?: boolean | undefined;
+  nomount?: boolean | undefined;
+  mark?: boolean | undefined;
+  nosort?: boolean | undefined;
+  stat?: boolean | undefined;
+  silent?: boolean | undefined;
+  strict?: boolean | undefined;
+  cache?:
+    | { [path: string]: boolean | "DIR" | "FILE" | ReadonlyArray<string> }
+    | undefined;
+  statCache?:
+    | { [path: string]: false | { isDirectory(): boolean } | undefined }
+    | undefined;
+  symlinks?: { [path: string]: boolean | undefined } | undefined;
+  realpathCache?: { [path: string]: string } | undefined;
+  sync?: boolean | undefined;
+  nounique?: boolean | undefined;
+  nonull?: boolean | undefined;
+  debug?: boolean | undefined;
+  nobrace?: boolean | undefined;
+  noglobstar?: boolean | undefined;
+  noext?: boolean | undefined;
+  nocase?: boolean | undefined;
+  matchBase?: any;
+  nodir?: boolean | undefined;
+  ignore?: string | ReadonlyArray<string> | undefined;
+  follow?: boolean | undefined;
+  realpath?: boolean | undefined;
+  nonegate?: boolean | undefined;
+  nocomment?: boolean | undefined;
+  absolute?: boolean | undefined;
+  allowWindowsEscape?: boolean | undefined;
+  fs?: typeof fs;
+}
 
 export type CreateOptions = {
   dot?: boolean;
-  globOptions?: GlobOptions;
+  globOptions?: IGlobOptions;
   ordering?: string;
   pattern?: string;
   transform?: (filePath: string) => NodeJS.ReadWriteStream | void;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asar-3.2.3/lib/pickle.js new/asar-3.2.5/lib/pickle.js
--- old/asar-3.2.3/lib/pickle.js        1970-01-01 01:00:00.000000000 +0100
+++ new/asar-3.2.5/lib/pickle.js        2023-09-19 02:25:17.000000000 +0200
@@ -0,0 +1,230 @@
+// sizeof(T).
+const SIZE_INT32 = 4
+const SIZE_UINT32 = 4
+const SIZE_INT64 = 8
+const SIZE_UINT64 = 8
+const SIZE_FLOAT = 4
+const SIZE_DOUBLE = 8
+
+// The allocation granularity of the payload.
+const PAYLOAD_UNIT = 64
+
+// Largest JS number.
+const CAPACITY_READ_ONLY = 9007199254740992
+
+// Aligns 'i' by rounding it up to the next multiple of 'alignment'.
+const alignInt = function (i, alignment) {
+  return i + (alignment - (i % alignment)) % alignment
+}
+
+// PickleIterator reads data from a Pickle. The Pickle object must remain valid
+// while the PickleIterator object is in use.
+const PickleIterator = (function () {
+  function PickleIterator (pickle) {
+    this.payload = pickle.header
+    this.payloadOffset = pickle.headerSize
+    this.readIndex = 0
+    this.endIndex = pickle.getPayloadSize()
+  }
+
+  PickleIterator.prototype.readBool = function () {
+    return this.readInt() !== 0
+  }
+
+  PickleIterator.prototype.readInt = function () {
+    return this.readBytes(SIZE_INT32, Buffer.prototype.readInt32LE)
+  }
+
+  PickleIterator.prototype.readUInt32 = function () {
+    return this.readBytes(SIZE_UINT32, Buffer.prototype.readUInt32LE)
+  }
+
+  PickleIterator.prototype.readInt64 = function () {
+    return this.readBytes(SIZE_INT64, Buffer.prototype.readInt64LE)
+  }
+
+  PickleIterator.prototype.readUInt64 = function () {
+    return this.readBytes(SIZE_UINT64, Buffer.prototype.readUInt64LE)
+  }
+
+  PickleIterator.prototype.readFloat = function () {
+    return this.readBytes(SIZE_FLOAT, Buffer.prototype.readFloatLE)
+  }
+
+  PickleIterator.prototype.readDouble = function () {
+    return this.readBytes(SIZE_DOUBLE, Buffer.prototype.readDoubleLE)
+  }
+
+  PickleIterator.prototype.readString = function () {
+    return this.readBytes(this.readInt()).toString()
+  }
+
+  PickleIterator.prototype.readBytes = function (length, method) {
+    const readPayloadOffset = this.getReadPayloadOffsetAndAdvance(length)
+    if (method != null) {
+      return method.call(this.payload, readPayloadOffset, length)
+    } else {
+      return this.payload.slice(readPayloadOffset, readPayloadOffset + length)
+    }
+  }
+
+  PickleIterator.prototype.getReadPayloadOffsetAndAdvance = function (length) {
+    if (length > this.endIndex - this.readIndex) {
+      this.readIndex = this.endIndex
+      throw new Error('Failed to read data with length of ' + length)
+    }
+    const readPayloadOffset = this.payloadOffset + this.readIndex
+    this.advance(length)
+    return readPayloadOffset
+  }
+
+  PickleIterator.prototype.advance = function (size) {
+    const alignedSize = alignInt(size, SIZE_UINT32)
+    if (this.endIndex - this.readIndex < alignedSize) {
+      this.readIndex = this.endIndex
+    } else {
+      this.readIndex += alignedSize
+    }
+  }
+
+  return PickleIterator
+})()
+
+// This class provides facilities for basic binary value packing and unpacking.
+//
+// The Pickle class supports appending primitive values (ints, strings, etc.)
+// to a pickle instance.  The Pickle instance grows its internal memory buffer
+// dynamically to hold the sequence of primitive values.   The internal memory
+// buffer is exposed as the "data" of the Pickle.  This "data" can be passed
+// to a Pickle object to initialize it for reading.
+//
+// When reading from a Pickle object, it is important for the consumer to know
+// what value types to read and in what order to read them as the Pickle does
+// not keep track of the type of data written to it.
+//
+// The Pickle's data has a header which contains the size of the Pickle's
+// payload.  It can optionally support additional space in the header.  That
+// space is controlled by the header_size parameter passed to the Pickle
+// constructor.
+const Pickle = (function () {
+  function Pickle (buffer) {
+    if (buffer) {
+      this.initFromBuffer(buffer)
+    } else {
+      this.initEmpty()
+    }
+  }
+
+  Pickle.prototype.initEmpty = function () {
+    this.header = Buffer.alloc(0)
+    this.headerSize = SIZE_UINT32
+    this.capacityAfterHeader = 0
+    this.writeOffset = 0
+    this.resize(PAYLOAD_UNIT)
+    this.setPayloadSize(0)
+  }
+
+  Pickle.prototype.initFromBuffer = function (buffer) {
+    this.header = buffer
+    this.headerSize = buffer.length - this.getPayloadSize()
+    this.capacityAfterHeader = CAPACITY_READ_ONLY
+    this.writeOffset = 0
+    if (this.headerSize > buffer.length) {
+      this.headerSize = 0
+    }
+    if (this.headerSize !== alignInt(this.headerSize, SIZE_UINT32)) {
+      this.headerSize = 0
+    }
+    if (this.headerSize === 0) {
+      this.header = Buffer.alloc(0)
+    }
+  }
+
+  Pickle.prototype.createIterator = function () {
+    return new PickleIterator(this)
+  }
+
+  Pickle.prototype.toBuffer = function () {
+    return this.header.slice(0, this.headerSize + this.getPayloadSize())
+  }
+
+  Pickle.prototype.writeBool = function (value) {
+    return this.writeInt(value ? 1 : 0)
+  }
+
+  Pickle.prototype.writeInt = function (value) {
+    return this.writeBytes(value, SIZE_INT32, Buffer.prototype.writeInt32LE)
+  }
+
+  Pickle.prototype.writeUInt32 = function (value) {
+    return this.writeBytes(value, SIZE_UINT32, Buffer.prototype.writeUInt32LE)
+  }
+
+  Pickle.prototype.writeInt64 = function (value) {
+    return this.writeBytes(value, SIZE_INT64, Buffer.prototype.writeInt64LE)
+  }
+
+  Pickle.prototype.writeUInt64 = function (value) {
+    return this.writeBytes(value, SIZE_UINT64, Buffer.prototype.writeUInt64LE)
+  }
+
+  Pickle.prototype.writeFloat = function (value) {
+    return this.writeBytes(value, SIZE_FLOAT, Buffer.prototype.writeFloatLE)
+  }
+
+  Pickle.prototype.writeDouble = function (value) {
+    return this.writeBytes(value, SIZE_DOUBLE, Buffer.prototype.writeDoubleLE)
+  }
+
+  Pickle.prototype.writeString = function (value) {
+    const length = Buffer.byteLength(value, 'utf8')
+    if (!this.writeInt(length)) {
+      return false
+    }
+    return this.writeBytes(value, length)
+  }
+
+  Pickle.prototype.setPayloadSize = function (payloadSize) {
+    return this.header.writeUInt32LE(payloadSize, 0)
+  }
+
+  Pickle.prototype.getPayloadSize = function () {
+    return this.header.readUInt32LE(0)
+  }
+
+  Pickle.prototype.writeBytes = function (data, length, method) {
+    const dataLength = alignInt(length, SIZE_UINT32)
+    const newSize = this.writeOffset + dataLength
+    if (newSize > this.capacityAfterHeader) {
+      this.resize(Math.max(this.capacityAfterHeader * 2, newSize))
+    }
+    if (method != null) {
+      method.call(this.header, data, this.headerSize + this.writeOffset)
+    } else {
+      this.header.write(data, this.headerSize + this.writeOffset, length)
+    }
+    const endOffset = this.headerSize + this.writeOffset + length
+    this.header.fill(0, endOffset, endOffset + dataLength - length)
+    this.setPayloadSize(newSize)
+    this.writeOffset = newSize
+    return true
+  }
+
+  Pickle.prototype.resize = function (newCapacity) {
+    newCapacity = alignInt(newCapacity, PAYLOAD_UNIT)
+    this.header = Buffer.concat([this.header, Buffer.alloc(newCapacity)])
+    this.capacityAfterHeader = newCapacity
+  }
+
+  return Pickle
+})()
+
+module.exports = {
+  createEmpty: function () {
+    return new Pickle()
+  },
+
+  createFromBuffer: function (buffer) {
+    return new Pickle(buffer)
+  }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asar-3.2.3/package.json new/asar-3.2.5/package.json
--- old/asar-3.2.3/package.json 2023-01-17 21:09:00.000000000 +0100
+++ new/asar-3.2.5/package.json 2023-09-19 02:25:17.000000000 +0200
@@ -43,14 +43,10 @@
     "directory": "test"
   },
   "dependencies": {
-    "chromium-pickle-js": "^0.2.0",
     "commander": "^5.0.0",
     "glob": "^7.1.6",
     "minimatch": "^3.0.4"
   },
-  "optionalDependencies": {
-    "@types/glob": "^7.1.1"
-  },
   "devDependencies": {
     "@continuous-auth/semantic-release-npm": "^3.0.0",
     "electron": "^22.0.0",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asar-3.2.3/test/pickle-spec.js 
new/asar-3.2.5/test/pickle-spec.js
--- old/asar-3.2.3/test/pickle-spec.js  1970-01-01 01:00:00.000000000 +0100
+++ new/asar-3.2.5/test/pickle-spec.js  2023-09-19 02:25:17.000000000 +0200
@@ -0,0 +1,12 @@
+const assert = require('assert')
+const Pickle = require('../lib/pickle')
+
+describe('Pickle', function () {
+  it('supports multi-byte characters', function () {
+    const write = Pickle.createEmpty()
+    write.writeString('女の子.txt')
+
+    const read = Pickle.createFromBuffer(write.toBuffer())
+    assert.strictEqual(read.createIterator().readString(), '女の子.txt')
+  })
+})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/asar-3.2.3/yarn.lock new/asar-3.2.5/yarn.lock
--- old/asar-3.2.3/yarn.lock    2023-01-17 21:09:00.000000000 +0100
+++ new/asar-3.2.5/yarn.lock    2023-09-19 02:25:17.000000000 +0200
@@ -323,14 +323,6 @@
   resolved 
"https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2";
   integrity 
sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==
 
-"@types/glob@^7.1.1":
-  version "7.2.0"
-  resolved 
"https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb";
-  integrity 
sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==
-  dependencies:
-    "@types/minimatch" "*"
-    "@types/node" "*"
-
 "@types/http-cache-semantics@*":
   version "4.0.1"
   resolved 
"https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812";
@@ -348,11 +340,6 @@
   dependencies:
     "@types/node" "*"
 
-"@types/minimatch@*":
-  version "5.1.2"
-  resolved 
"https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca";
-  integrity 
sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==
-
 "@types/minimist@^1.2.0":
   version "1.2.2"
   resolved 
"https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c";
@@ -746,11 +733,6 @@
   resolved 
"https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece";
   integrity 
sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
 
-chromium-pickle-js@^0.2.0:
-  version "0.2.0"
-  resolved 
"https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205";
-  integrity 
sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==
-
 cidr-regex@^3.1.1:
   version "3.1.1"
   resolved 
"https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-3.1.1.tgz#ba1972c57c66f61875f18fd7dd487469770b571d";
@@ -1125,9 +1107,9 @@
     is-electron-renderer "^2.0.0"
 
 electron@^22.0.0:
-  version "22.0.0"
-  resolved 
"https://registry.yarnpkg.com/electron/-/electron-22.0.0.tgz#ef84ab9cf23aa3f8c2f42a1e8e000ad7fd941058";
-  integrity 
sha512-cgRc4wjyM+81A0E8UGv1HNJjL1HBI5cWNh/DUIjzYvoUuiEM0SS0hAH/zaFQ18xOz2ced6Yih8SybpOiOYJhdg==
+  version "22.3.24"
+  resolved 
"https://registry.yarnpkg.com/electron/-/electron-22.3.24.tgz#14479cf11cf4709f78d324015429fa82492c2150";
+  integrity 
sha512-wnGsShoRVk1Jmgr7h/jZK9bI5UwMF88sdQ5c8z2j2N8B9elhF/jKDFjwDXUrY1Y0xzAskOP0tYIDE+UbUM4byQ==
   dependencies:
     "@electron/get" "^2.0.0"
     "@types/node" "^16.11.26"
@@ -1910,9 +1892,9 @@
     lru-cache "^7.5.1"
 
 http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0:
-  version "4.1.0"
-  resolved 
"https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390";
-  integrity 
sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
+  version "4.1.1"
+  resolved 
"https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a";
+  integrity 
sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==
 
 http-proxy-agent@^5.0.0:
   version "5.0.0"
@@ -3849,19 +3831,19 @@
   integrity 
sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==
 
 "semver@2 || 3 || 4 || 5", semver@^5.5.0:
-  version "5.7.1"
-  resolved 
"https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7";
-  integrity 
sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
+  version "5.7.2"
+  resolved 
"https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8";
+  integrity 
sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
 
 semver@^6.1.0, semver@^6.1.2, semver@^6.2.0:
-  version "6.3.0"
-  resolved 
"https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d";
-  integrity 
sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
+  version "6.3.1"
+  resolved 
"https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4";
+  integrity 
sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
 
 semver@^7.0.0, semver@^7.1.1, semver@^7.1.2, semver@^7.3.2, semver@^7.3.4, 
semver@^7.3.5, semver@^7.3.7:
-  version "7.3.8"
-  resolved 
"https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798";
-  integrity 
sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
+  version "7.5.4"
+  resolved 
"https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e";
+  integrity 
sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
   dependencies:
     lru-cache "^6.0.0"
 
@@ -4410,9 +4392,9 @@
     string-width "^1.0.2 || 2 || 3 || 4"
 
 word-wrap@~1.2.3:
-  version "1.2.3"
-  resolved 
"https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c";
-  integrity 
sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
+  version "1.2.4"
+  resolved 
"https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f";
+  integrity 
sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==
 
 workerpool@6.2.0:
   version "6.2.0"

Reply via email to