From 645d43abeb354e131daa3fcc275dd00d2c0ebe36 Mon Sep 17 00:00:00 2001 From: Ben White Date: Mon, 8 Apr 2024 12:57:02 +0200 Subject: [PATCH 1/4] Updated types --- package.json | 1 + pnpm-lock.yaml | 1160 ++++++++++++++++++++++++- src/extensions/segment-integration.ts | 33 +- src/posthog-core.ts | 7 +- src/types.ts | 3 +- 5 files changed, 1172 insertions(+), 32 deletions(-) diff --git a/package.json b/package.json index 1c153ff27..4c3a7bfa3 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "^11.1.6", "@rrweb/types": "2.0.0-alpha.11", + "@segment/analytics-next": "^1.66.0", "@sentry/types": "7.37.2", "@testing-library/dom": "^9.3.0", "@types/eslint": "^8.44.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac11bc352..4774ba576 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.0' +lockfileVersion: '6.1' settings: autoInstallPeers: true @@ -51,6 +51,9 @@ devDependencies: '@rrweb/types': specifier: 2.0.0-alpha.11 version: 2.0.0-alpha.11 + '@segment/analytics-next': + specifier: ^1.66.0 + version: 1.66.0 '@sentry/types': specifier: 7.37.2 version: 7.37.2 @@ -2387,6 +2390,18 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /@lukeed/csprng@1.1.0: + resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} + engines: {node: '>=8'} + dev: true + + /@lukeed/uuid@2.0.1: + resolution: {integrity: sha512-qC72D4+CDdjGqJvkFMMEAtancHUQ7/d/tAiHf64z8MopFDmcrtbcJuerDtFceuAfQJ2pDSfCKCtbqoGBNnwg0w==} + engines: {node: '>=8'} + dependencies: + '@lukeed/csprng': 1.1.0 + dev: true + /@mdn/browser-compat-data@5.2.61: resolution: {integrity: sha512-jzPrheqEtrnUWWNUS8SFVbQAnoO6rOXetkjiJyzP92UM+BNcyExLD0Qikv9z6TU9D6A9rbXkh3pSmZ5G88d6ew==} dev: true @@ -2655,6 +2670,78 @@ packages: rrweb-snapshot: 2.0.0-alpha.11 dev: true + /@segment/analytics-core@1.5.0: + resolution: {integrity: sha512-xFM9sS4ltRWDnNE6bD/bwLAGGBI1Doidf35J6ePyuOfecZ7c0sADtk9xR1QD98CDDFVaQcrfV/O1l4rBZvCm4A==} + dependencies: + '@lukeed/uuid': 2.0.1 + '@segment/analytics-generic-utils': 1.2.0 + dset: 3.1.3 + tslib: 2.5.0 + dev: true + + /@segment/analytics-generic-utils@1.2.0: + resolution: {integrity: sha512-DfnW6mW3YQOLlDQQdR89k4EqfHb0g/3XvBXkovH1FstUN93eL1kfW9CsDcVQyH3bAC5ZsFyjA/o/1Q2j0QeoWw==} + dependencies: + tslib: 2.5.0 + dev: true + + /@segment/analytics-next@1.66.0: + resolution: {integrity: sha512-euCOLXUAAfcd/kI5FkCrOJ+Sp3QuCn3f9/1U5J+rly+lfqczKqw4x7A5aon6X3ncBJjfEP3gt9OZdcmgco18Ow==} + dependencies: + '@lukeed/uuid': 2.0.1 + '@segment/analytics-core': 1.5.0 + '@segment/analytics-generic-utils': 1.2.0 + '@segment/analytics.js-video-plugins': 0.2.1 + '@segment/facade': 3.4.10 + '@segment/tsub': 2.0.0 + dset: 3.1.3 + js-cookie: 3.0.1 + node-fetch: 2.6.11 + spark-md5: 3.0.2 + tslib: 2.5.0 + unfetch: 4.2.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@segment/analytics.js-video-plugins@0.2.1: + resolution: {integrity: sha512-lZwCyEXT4aaHBLNK433okEKdxGAuyrVmop4BpQqQSJuRz0DglPZgd9B/XjiiWs1UyOankg2aNYMN3VcS8t4eSQ==} + dependencies: + unfetch: 3.1.2 + dev: true + + /@segment/facade@3.4.10: + resolution: {integrity: sha512-xVQBbB/lNvk/u8+ey0kC/+g8pT3l0gCT8O2y9Z+StMMn3KAFAQ9w8xfgef67tJybktOKKU7pQGRPolRM1i1pdA==} + dependencies: + '@segment/isodate-traverse': 1.1.1 + inherits: 2.0.4 + new-date: 1.0.3 + obj-case: 0.2.1 + dev: true + + /@segment/isodate-traverse@1.1.1: + resolution: {integrity: sha512-+G6e1SgAUkcq0EDMi+SRLfT48TNlLPF3QnSgFGVs0V9F3o3fq/woQ2rHFlW20W0yy5NnCUH0QGU3Am2rZy/E3w==} + dependencies: + '@segment/isodate': 1.0.3 + dev: true + + /@segment/isodate@1.0.3: + resolution: {integrity: sha512-BtanDuvJqnACFkeeYje7pWULVv8RgZaqKHWwGFnL/g/TH/CcZjkIVTfGDp/MAxmilYHUkrX70SqwnYSTNEaN7A==} + dev: true + + /@segment/tsub@2.0.0: + resolution: {integrity: sha512-NzkBK8GwPsyQ74AceLjENbUoaFrObnzEKOX4ko2wZDuIyK+DnDm3B//8xZYI2LCKt+wUD55l6ygfjCoVs8RMWw==} + hasBin: true + dependencies: + '@stdlib/math-base-special-ldexp': 0.0.5 + dlv: 1.1.3 + dset: 3.1.3 + tiny-hashes: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: true + /@sentry/types@7.37.2: resolution: {integrity: sha512-SxKQOCX94ZaQM4C2ysNjHdJsjYapu/NYZCz1cnPyCdDvYfhwiVge1uq6ZHiQ/ARfxAAOmc3R4Mh3VvEz7WUOdw==} engines: {node: '>=8'} @@ -2701,6 +2788,1037 @@ packages: resolution: {integrity: sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==} dev: true + /@stdlib/array-float32@0.0.6: + resolution: {integrity: sha512-QgKT5UaE92Rv7cxfn7wBKZAlwFFHPla8eXsMFsTGt5BiL4yUy36lwinPUh4hzybZ11rw1vifS3VAPuk6JP413Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-has-float32array-support': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/array-float64@0.0.6: + resolution: {integrity: sha512-oE8y4a84LyBF1goX5//sU1mOjet8gLI0/6wucZcjg+j/yMmNV1xFu84Az9GOGmFSE6Ze6lirGOhfBeEWNNNaJg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-has-float64array-support': 0.0.8 + dev: true + + /@stdlib/array-uint16@0.0.6: + resolution: {integrity: sha512-/A8Tr0CqJ4XScIDRYQawosko8ha1Uy+50wsTgJhjUtXDpPRp7aUjmxvYkbe7Rm+ImYYbDQVix/uCiPAFQ8ed4Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-has-uint16array-support': 0.0.8 + dev: true + + /@stdlib/array-uint32@0.0.6: + resolution: {integrity: sha512-2hFPK1Fg7obYPZWlGDjW9keiIB6lXaM9dKmJubg/ergLQCsJQJZpYsG6mMAfTJi4NT1UF4jTmgvyKD+yf0D9cA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-has-uint32array-support': 0.0.8 + dev: true + + /@stdlib/array-uint8@0.0.7: + resolution: {integrity: sha512-qYJQQfGKIcky6TzHFIGczZYTuVlut7oO+V8qUBs7BJC9TwikVnnOmb3hY3jToY4xaoi5p9OvgdJKPInhyIhzFg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-has-uint8array-support': 0.0.8 + dev: true + + /@stdlib/assert-has-float32array-support@0.0.8: + resolution: {integrity: sha512-Yrg7K6rBqwCzDWZ5bN0VWLS5dNUWcoSfUeU49vTERdUmZID06J069CDc07UUl8vfQWhFgBWGocH3rrpKm1hi9w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/assert-is-float32array': 0.0.8 + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/constants-float64-pinf': 0.0.8 + '@stdlib/fs-read-file': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/assert-has-float64array-support@0.0.8: + resolution: {integrity: sha512-UVQcoeWqgMw9b8PnAmm/sgzFnuWkZcNhJoi7xyMjbiDV/SP1qLCrvi06mq86cqS3QOCma1fEayJdwgteoXyyuw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/assert-is-float64array': 0.0.8 + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-read-file': 0.0.8 + dev: true + + /@stdlib/assert-has-node-buffer-support@0.0.8: + resolution: {integrity: sha512-fgI+hW4Yg4ciiv4xVKH+1rzdV7e5+6UKgMnFbc1XDXHcxLub3vOr8+H6eDECdAIfgYNA7X0Dxa/DgvX9dwDTAQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/assert-is-buffer': 0.0.8 + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-read-file': 0.0.8 + dev: true + + /@stdlib/assert-has-own-property@0.0.7: + resolution: {integrity: sha512-3YHwSWiUqGlTLSwxAWxrqaD1PkgcJniGyotJeIt5X0tSNmSW0/c9RWroCImTUUB3zBkyBJ79MyU9Nf4Qgm59fQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dev: true + + /@stdlib/assert-has-symbol-support@0.0.8: + resolution: {integrity: sha512-PoQ9rk8DgDCuBEkOIzGGQmSnjtcdagnUIviaP5YskB45/TJHXseh4NASWME8FV77WFW9v/Wt1MzKFKMzpDFu4Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-read-file': 0.0.8 + dev: true + + /@stdlib/assert-has-tostringtag-support@0.0.9: + resolution: {integrity: sha512-UTsqdkrnQ7eufuH5BeyWOJL3ska3u5nvDWKqw3onNNZ2mvdgkfoFD7wHutVGzAA2rkTsSJAMBHVwWLsm5SbKgw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/assert-has-symbol-support': 0.0.8 + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-read-file': 0.0.8 + dev: true + + /@stdlib/assert-has-uint16array-support@0.0.8: + resolution: {integrity: sha512-vqFDn30YrtzD+BWnVqFhB130g3cUl2w5AdOxhIkRkXCDYAM5v7YwdNMJEON+D4jI8YB4D5pEYjqKweYaCq4nyg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/assert-is-uint16array': 0.0.8 + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/constants-uint16-max': 0.0.7 + '@stdlib/fs-read-file': 0.0.8 + dev: true + + /@stdlib/assert-has-uint32array-support@0.0.8: + resolution: {integrity: sha512-tJtKuiFKwFSQQUfRXEReOVGXtfdo6+xlshSfwwNWXL1WPP2LrceoiUoQk7zMCMT6VdbXgGH92LDjVcPmSbH4Xw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/assert-is-uint32array': 0.0.8 + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/constants-uint32-max': 0.0.7 + '@stdlib/fs-read-file': 0.0.8 + dev: true + + /@stdlib/assert-has-uint8array-support@0.0.8: + resolution: {integrity: sha512-ie4vGTbAS/5Py+LLjoSQi0nwtYBp+WKk20cMYCzilT0rCsBI/oez0RqHrkYYpmt4WaJL4eJqC+/vfQ5NsI7F5w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/assert-is-uint8array': 0.0.8 + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/constants-uint8-max': 0.0.7 + '@stdlib/fs-read-file': 0.0.8 + dev: true + + /@stdlib/assert-is-array@0.0.7: + resolution: {integrity: sha512-/o6KclsGkNcZ5hiROarsD9XUs6xQMb4lTwF6O71UHbKWTtomEF/jD0rxLvlvj0BiCxfKrReddEYd2CnhUyskMA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-native-class': 0.0.8 + dev: true + + /@stdlib/assert-is-big-endian@0.0.7: + resolution: {integrity: sha512-BvutsX84F76YxaSIeS5ZQTl536lz+f+P7ew68T1jlFqxBhr4v7JVYFmuf24U040YuK1jwZ2sAq+bPh6T09apwQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/array-uint16': 0.0.6 + '@stdlib/array-uint8': 0.0.7 + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-read-file': 0.0.8 + dev: true + + /@stdlib/assert-is-boolean@0.0.8: + resolution: {integrity: sha512-PRCpslMXSYqFMz1Yh4dG2K/WzqxTCtlKbgJQD2cIkAtXux4JbYiXCtepuoV7l4Wv1rm0a1eU8EqNPgnOmWajGw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-has-tostringtag-support': 0.0.9 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + '@stdlib/utils-native-class': 0.0.8 + dev: true + + /@stdlib/assert-is-buffer@0.0.8: + resolution: {integrity: sha512-SYmGwOXkzZVidqUyY1IIx6V6QnSL36v3Lcwj8Rvne/fuW0bU2OomsEBzYCFMvcNgtY71vOvgZ9VfH3OppvV6eA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-is-object-like': 0.0.8 + dev: true + + /@stdlib/assert-is-float32array@0.0.8: + resolution: {integrity: sha512-Phk0Ze7Vj2/WLv5Wy8Oo7poZIDMSTiTrEnc1t4lBn3Svz2vfBXlvCufi/i5d93vc4IgpkdrOEwfry6nldABjNQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-native-class': 0.0.8 + dev: true + + /@stdlib/assert-is-float64array@0.0.8: + resolution: {integrity: sha512-UC0Av36EEYIgqBbCIz1lj9g7qXxL5MqU1UrWun+n91lmxgdJ+Z77fHy75efJbJlXBf6HXhcYXECIsc0u3SzyDQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-native-class': 0.0.8 + dev: true + + /@stdlib/assert-is-function@0.0.8: + resolution: {integrity: sha512-M55Dt2njp5tnY8oePdbkKBRIypny+LpCMFZhEjJIxjLE4rA6zSlHs1yRMqD4PmW+Wl9WTeEM1GYO4AQHl1HAjA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-type-of': 0.0.8 + dev: true + + /@stdlib/assert-is-little-endian@0.0.7: + resolution: {integrity: sha512-SPObC73xXfDXY0dOewXR0LDGN3p18HGzm+4K8azTj6wug0vpRV12eB3hbT28ybzRCa6TAKUjwM/xY7Am5QzIlA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/array-uint16': 0.0.6 + '@stdlib/array-uint8': 0.0.7 + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-read-file': 0.0.8 + dev: true + + /@stdlib/assert-is-number@0.0.7: + resolution: {integrity: sha512-mNV4boY1cUOmoWWfA2CkdEJfXA6YvhcTvwKC0Fzq+HoFFOuTK/scpTd9HanUyN6AGBlWA8IW+cQ1ZwOT3XMqag==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-has-tostringtag-support': 0.0.9 + '@stdlib/number-ctor': 0.0.7 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + '@stdlib/utils-native-class': 0.0.8 + dev: true + + /@stdlib/assert-is-object-like@0.0.8: + resolution: {integrity: sha512-pe9selDPYAu/lYTFV5Rj4BStepgbzQCr36b/eC8EGSJh6gMgRXgHVv0R+EbdJ69KNkHvKKRjnWj0A/EmCwW+OA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-tools-array-function': 0.0.7 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + dev: true + + /@stdlib/assert-is-object@0.0.8: + resolution: {integrity: sha512-ooPfXDp9c7w+GSqD2NBaZ/Du1JRJlctv+Abj2vRJDcDPyrnRTb1jmw+AuPgcW7Ca7op39JTbArI+RVHm/FPK+Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-is-array': 0.0.7 + dev: true + + /@stdlib/assert-is-plain-object@0.0.7: + resolution: {integrity: sha512-t/CEq2a083ajAgXgSa5tsH8l3kSoEqKRu1qUwniVLFYL4RGv3615CrpJUDQKVtEX5S/OKww5q0Byu3JidJ4C5w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-has-own-property': 0.0.7 + '@stdlib/assert-is-function': 0.0.8 + '@stdlib/assert-is-object': 0.0.8 + '@stdlib/utils-get-prototype-of': 0.0.7 + '@stdlib/utils-native-class': 0.0.8 + dev: true + + /@stdlib/assert-is-regexp-string@0.0.9: + resolution: {integrity: sha512-FYRJJtH7XwXEf//X6UByUC0Eqd0ZYK5AC8or5g5m5efQrgr2lOaONHyDQ3Scj1A2D6QLIJKZc9XBM4uq5nOPXA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/assert-is-string': 0.0.8 + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-read-file': 0.0.8 + '@stdlib/process-read-stdin': 0.0.7 + '@stdlib/regexp-eol': 0.0.7 + '@stdlib/regexp-regexp': 0.0.8 + '@stdlib/streams-node-stdin': 0.0.7 + dev: true + + /@stdlib/assert-is-regexp@0.0.7: + resolution: {integrity: sha512-ty5qvLiqkDq6AibHlNJe0ZxDJ9Mg896qolmcHb69mzp64vrsORnPPOTzVapAq0bEUZbXoypeijypLPs9sCGBSQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-has-tostringtag-support': 0.0.9 + '@stdlib/utils-native-class': 0.0.8 + dev: true + + /@stdlib/assert-is-string@0.0.8: + resolution: {integrity: sha512-Uk+bR4cglGBbY0q7O7HimEJiW/DWnO1tSzr4iAGMxYgf+VM2PMYgI5e0TLy9jOSOzWon3YS39lc63eR3a9KqeQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-has-tostringtag-support': 0.0.9 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + '@stdlib/utils-native-class': 0.0.8 + dev: true + + /@stdlib/assert-is-uint16array@0.0.8: + resolution: {integrity: sha512-M+qw7au+qglRXcXHjvoUZVLlGt1mPjuKudrVRto6KL4+tDsP2j+A89NDP3Fz8/XIUD+5jhj+65EOKHSMvDYnng==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-native-class': 0.0.8 + dev: true + + /@stdlib/assert-is-uint32array@0.0.8: + resolution: {integrity: sha512-cnZi2DicYcplMnkJ3dBxBVKsRNFjzoGpmG9A6jXq4KH5rFl52SezGAXSVY9o5ZV7bQGaF5JLyCLp6n9Y74hFGg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-native-class': 0.0.8 + dev: true + + /@stdlib/assert-is-uint8array@0.0.8: + resolution: {integrity: sha512-8cqpDQtjnJAuVtRkNAktn45ixq0JHaGJxVsSiK79k7GRggvMI6QsbzO6OvcLnZ/LimD42FmgbLd13Yc2esDmZw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-native-class': 0.0.8 + dev: true + + /@stdlib/assert-tools-array-function@0.0.7: + resolution: {integrity: sha512-3lqkaCIBMSJ/IBHHk4NcCnk2NYU52tmwTYbbqhAmv7vim8rZPNmGfj3oWkzrCsyCsyTF7ooD+In2x+qTmUbCtQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-is-array': 0.0.7 + dev: true + + /@stdlib/buffer-ctor@0.0.7: + resolution: {integrity: sha512-4IyTSGijKUQ8+DYRaKnepf9spvKLZ+nrmZ+JrRcB3FrdTX/l9JDpggcUcC/Fe+A4KIZOnClfxLn6zfIlkCZHNA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-has-node-buffer-support': 0.0.8 + dev: true + + /@stdlib/buffer-from-string@0.0.8: + resolution: {integrity: sha512-Dws5ZbK2M9l4Bkn/ODHFm3lNZ8tWko+NYXqGS/UH/RIQv3PGp+1tXFUSvjwjDneM6ppjQVExzVedUH1ftABs9A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-is-function': 0.0.8 + '@stdlib/assert-is-string': 0.0.8 + '@stdlib/buffer-ctor': 0.0.7 + '@stdlib/string-format': 0.0.3 + dev: true + + /@stdlib/cli-ctor@0.0.3: + resolution: {integrity: sha512-0zCuZnzFyxj66GoF8AyIOhTX5/mgGczFvr6T9h4mXwegMZp8jBC/ZkOGMwmp+ODLBTvlcnnDNpNFkDDyR6/c2g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + '@stdlib/utils-noop': 0.0.14 + minimist: 1.2.8 + dev: true + + /@stdlib/complex-float32@0.0.7: + resolution: {integrity: sha512-POCtQcBZnPm4IrFmTujSaprR1fcOFr/MRw2Mt7INF4oed6b1nzeG647K+2tk1m4mMrMPiuXCdvwJod4kJ0SXxQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-is-number': 0.0.7 + '@stdlib/number-float64-base-to-float32': 0.0.7 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + '@stdlib/utils-define-property': 0.0.9 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/complex-float64@0.0.8: + resolution: {integrity: sha512-lUJwsXtGEziOWAqCcnKnZT4fcVoRsl6t6ECaCJX45Z7lAc70yJLiwUieLWS5UXmyoADHuZyUXkxtI4oClfpnaw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-is-number': 0.0.7 + '@stdlib/complex-float32': 0.0.7 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + '@stdlib/utils-define-property': 0.0.9 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/complex-reim@0.0.6: + resolution: {integrity: sha512-28WXfPSIFMtHb0YgdatkGS4yxX5sPYea5MiNgqPv3E78+tFcg8JJG52NQ/MviWP2wsN9aBQAoCPeu8kXxSPdzA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/array-float64': 0.0.6 + '@stdlib/complex-float64': 0.0.8 + '@stdlib/types': 0.0.14 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/complex-reimf@0.0.1: + resolution: {integrity: sha512-P9zu05ZW2i68Oppp3oHelP7Tk0D7tGBL0hGl1skJppr2vY9LltuNbeYI3C96tQe/7Enw/5GyAWgxoQI4cWccQA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/array-float32': 0.0.6 + '@stdlib/complex-float32': 0.0.7 + '@stdlib/types': 0.0.14 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/constants-float64-exponent-bias@0.0.8: + resolution: {integrity: sha512-IzBJQw9hYgWCki7VoC/zJxEA76Nmf8hmY+VkOWnJ8IyfgTXClgY8tfDGS1cc4l/hCOEllxGp9FRvVdn24A5tKQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/constants-float64-high-word-abs-mask@0.0.1: + resolution: {integrity: sha512-1vy8SUyMHFBwqUUVaZFA7r4/E3cMMRKSwsaa/EZ15w7Kmc01W/ZmaaTLevRcIdACcNgK+8i8813c8H7LScXNcQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/constants-float64-high-word-exponent-mask@0.0.8: + resolution: {integrity: sha512-z28/EQERc0VG7N36bqdvtrRWjFc8600PKkwvl/nqx6TpKAzMXNw55BS1xT4C28Sa9Z7uBWeUj3UbIFedbkoyMw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/constants-float64-high-word-sign-mask@0.0.1: + resolution: {integrity: sha512-hmTr5caK1lh1m0eyaQqt2Vt3y+eEdAx57ndbADEbXhxC9qSGd0b4bLSzt/Xp4MYBYdQkHAE/BlkgUiRThswhCg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/constants-float64-max-base2-exponent-subnormal@0.0.8: + resolution: {integrity: sha512-YGBZykSiXFebznnJfWFDwhho2Q9xhUWOL+X0lZJ4ItfTTo40W6VHAyNYz98tT/gJECFype0seNzzo1nUxCE7jQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/constants-float64-max-base2-exponent@0.0.8: + resolution: {integrity: sha512-xBAOtso1eiy27GnTut2difuSdpsGxI8dJhXupw0UukGgvy/3CSsyNm+a1Suz/dhqK4tPOTe5QboIdNMw5IgXKQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/constants-float64-min-base2-exponent-subnormal@0.0.8: + resolution: {integrity: sha512-bt81nBus/91aEqGRQBenEFCyWNsf8uaxn4LN1NjgkvY92S1yVxXFlC65fJHsj9FTqvyZ+uj690/gdMKUDV3NjQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/constants-float64-ninf@0.0.8: + resolution: {integrity: sha512-bn/uuzCne35OSLsQZJlNrkvU1/40spGTm22g1+ZI1LL19J8XJi/o4iupIHRXuLSTLFDBqMoJlUNphZlWQ4l8zw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/number-ctor': 0.0.7 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/constants-float64-pinf@0.0.8: + resolution: {integrity: sha512-I3R4rm2cemoMuiDph07eo5oWZ4ucUtpuK73qBJiJPDQKz8fSjSe4wJBAigq2AmWYdd7yJHsl5NJd8AgC6mP5Qw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/constants-float64-smallest-normal@0.0.8: + resolution: {integrity: sha512-Qwxpn5NA3RXf+mQcffCWRcsHSPTUQkalsz0+JDpblDszuz2XROcXkOdDr5LKgTAUPIXsjOgZzTsuRONENhsSEg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/constants-uint16-max@0.0.7: + resolution: {integrity: sha512-7TPoku7SlskA67mAm7mykIAjeEnkQJemw1cnKZur0mT5W4ryvDR6iFfL9xBiByVnWYq/+ei7DHbOv6/2b2jizw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dev: true + + /@stdlib/constants-uint32-max@0.0.7: + resolution: {integrity: sha512-8+NK0ewqc1vnEZNqzwFJgFSy3S543Eft7i8WyW/ygkofiqEiLAsujvYMHzPAB8/3D+PYvjTSe37StSwRwvQ6uw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dev: true + + /@stdlib/constants-uint8-max@0.0.7: + resolution: {integrity: sha512-fqV+xds4jgwFxwWu08b8xDuIoW6/D4/1dtEjZ1sXVeWR7nf0pjj1cHERq4kdkYxsvOGu+rjoR3MbjzpFc4fvSw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dev: true + + /@stdlib/fs-exists@0.0.8: + resolution: {integrity: sha512-mZktcCxiLmycCJefm1+jbMTYkmhK6Jk1ShFmUVqJvs+Ps9/2EEQXfPbdEniLoVz4HeHLlcX90JWobUEghOOnAQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-read-file': 0.0.8 + '@stdlib/process-cwd': 0.0.8 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + dev: true + + /@stdlib/fs-read-file@0.0.8: + resolution: {integrity: sha512-pIZID/G91+q7ep4x9ECNC45+JT2j0+jdz/ZQVjCHiEwXCwshZPEvxcPQWb9bXo6coOY+zJyX5TwBIpXBxomWFg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + dev: true + + /@stdlib/fs-resolve-parent-path@0.0.8: + resolution: {integrity: sha512-ok1bTWsAziChibQE3u7EoXwbCQUDkFjjRAHSxh7WWE5JEYVJQg1F0o3bbjRr4D/wfYYPWLAt8AFIKBUDmWghpg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/assert-has-own-property': 0.0.7 + '@stdlib/assert-is-function': 0.0.8 + '@stdlib/assert-is-plain-object': 0.0.7 + '@stdlib/assert-is-string': 0.0.8 + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-exists': 0.0.8 + '@stdlib/fs-read-file': 0.0.8 + '@stdlib/process-cwd': 0.0.8 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + dev: true + + /@stdlib/math-base-assert-is-infinite@0.0.9: + resolution: {integrity: sha512-JuPDdmxd+AtPWPHu9uaLvTsnEPaZODZk+zpagziNbDKy8DRiU1cy+t+QEjB5WizZt0A5MkuxDTjZ/8/sG5GaYQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/constants-float64-ninf': 0.0.8 + '@stdlib/constants-float64-pinf': 0.0.8 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/math-base-assert-is-nan@0.0.8: + resolution: {integrity: sha512-m+gCVBxLFW8ZdAfdkATetYMvM7sPFoMKboacHjb1pe21jHQqVb+/4bhRSDg6S7HGX7/8/bSzEUm9zuF7vqK5rQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/math-base-napi-binary@0.0.8: + resolution: {integrity: sha512-B8d0HBPhfXefbdl/h0h5c+lM2sE+/U7Fb7hY/huVeoQtBtEx0Jbx/qKvPSVxMjmWCKfWlbPpbgKpN5GbFgLiAg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/complex-float32': 0.0.7 + '@stdlib/complex-float64': 0.0.8 + '@stdlib/complex-reim': 0.0.6 + '@stdlib/complex-reimf': 0.0.1 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/math-base-napi-unary@0.0.9: + resolution: {integrity: sha512-2WNKhjCygkGMp0RgjaD7wAHJTqPZmuVW7yPOc62Tnz2U+Ad8q/tcOcN+uvq2dtKsAGr1HDMIQxZ/XrrThMePyA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/complex-float32': 0.0.7 + '@stdlib/complex-float64': 0.0.8 + '@stdlib/complex-reim': 0.0.6 + '@stdlib/complex-reimf': 0.0.1 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/math-base-special-abs@0.0.6: + resolution: {integrity: sha512-FaaMUnYs2qIVN3kI5m/qNlBhDnjszhDOzEhxGEoQWR/k0XnxbCsTyjNesR2DkpiKuoAXAr9ojoDe2qBYdirWoQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/math-base-napi-unary': 0.0.9 + '@stdlib/number-float64-base-to-words': 0.0.7 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/math-base-special-copysign@0.0.7: + resolution: {integrity: sha512-7Br7oeuVJSBKG8BiSk/AIRFTBd2sbvHdV3HaqRj8tTZHX8BQomZ3Vj4Qsiz3kPyO4d6PpBLBTYlGTkSDlGOZJA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/constants-float64-high-word-abs-mask': 0.0.1 + '@stdlib/constants-float64-high-word-sign-mask': 0.0.1 + '@stdlib/math-base-napi-binary': 0.0.8 + '@stdlib/number-float64-base-from-words': 0.0.6 + '@stdlib/number-float64-base-get-high-word': 0.0.6 + '@stdlib/number-float64-base-to-words': 0.0.7 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/math-base-special-ldexp@0.0.5: + resolution: {integrity: sha512-RLRsPpCdcJZMhwb4l4B/FsmGfEPEWAsik6KYUkUSSHb7ok/gZWt8LgVScxGMpJMpl5IV0v9qG4ZINVONKjX5KA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/constants-float64-exponent-bias': 0.0.8 + '@stdlib/constants-float64-max-base2-exponent': 0.0.8 + '@stdlib/constants-float64-max-base2-exponent-subnormal': 0.0.8 + '@stdlib/constants-float64-min-base2-exponent-subnormal': 0.0.8 + '@stdlib/constants-float64-ninf': 0.0.8 + '@stdlib/constants-float64-pinf': 0.0.8 + '@stdlib/math-base-assert-is-infinite': 0.0.9 + '@stdlib/math-base-assert-is-nan': 0.0.8 + '@stdlib/math-base-special-copysign': 0.0.7 + '@stdlib/number-float64-base-exponent': 0.0.6 + '@stdlib/number-float64-base-from-words': 0.0.6 + '@stdlib/number-float64-base-normalize': 0.0.9 + '@stdlib/number-float64-base-to-words': 0.0.7 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/number-ctor@0.0.7: + resolution: {integrity: sha512-kXNwKIfnb10Ro3RTclhAYqbE3DtIXax+qpu0z1/tZpI2vkmTfYDQLno2QJrzJsZZgdeFtXIws+edONN9kM34ow==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dev: true + + /@stdlib/number-float64-base-exponent@0.0.6: + resolution: {integrity: sha512-wLXsG+cvynmapoffmj5hVNDH7BuHIGspBcTCdjPaD+tnqPDIm03qV5Z9YBhDh91BdOCuPZQ8Ovu2WBpX+ySeGg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/constants-float64-exponent-bias': 0.0.8 + '@stdlib/constants-float64-high-word-exponent-mask': 0.0.8 + '@stdlib/number-float64-base-get-high-word': 0.0.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/number-float64-base-from-words@0.0.6: + resolution: {integrity: sha512-r0elnekypCN831aw9Gp8+08br8HHAqvqtc5uXaxEh3QYIgBD/QM5qSb3b7WSAQ0ZxJJKdoykupODWWBkWQTijg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/array-float64': 0.0.6 + '@stdlib/array-uint32': 0.0.6 + '@stdlib/assert-is-little-endian': 0.0.7 + '@stdlib/number-float64-base-to-words': 0.0.7 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/number-float64-base-get-high-word@0.0.6: + resolution: {integrity: sha512-jSFSYkgiG/IzDurbwrDKtWiaZeSEJK8iJIsNtbPG1vOIdQMRyw+t0bf3Kf3vuJu/+bnSTvYZLqpCO6wzT/ve9g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/array-float64': 0.0.6 + '@stdlib/array-uint32': 0.0.6 + '@stdlib/assert-is-little-endian': 0.0.7 + '@stdlib/number-float64-base-to-words': 0.0.7 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/number-float64-base-normalize@0.0.9: + resolution: {integrity: sha512-+rm7RQJEj8zHkqYFE2a6DgNQSB5oKE/IydHAajgZl40YB91BoYRYf/ozs5/tTwfy2Fc04+tIpSfFtzDr4ZY19Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/constants-float64-smallest-normal': 0.0.8 + '@stdlib/math-base-assert-is-infinite': 0.0.9 + '@stdlib/math-base-assert-is-nan': 0.0.8 + '@stdlib/math-base-special-abs': 0.0.6 + '@stdlib/types': 0.0.14 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/number-float64-base-to-float32@0.0.7: + resolution: {integrity: sha512-PNUSi6+cqfFiu4vgFljUKMFY2O9PxI6+T+vqtIoh8cflf+PjSGj3v4QIlstK9+6qU40eGR5SHZyLTWdzmNqLTQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/array-float32': 0.0.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/number-float64-base-to-words@0.0.7: + resolution: {integrity: sha512-7wsYuq+2MGp9rAkTnQ985rah7EJI9TfgHrYSSd4UIu4qIjoYmWIKEhIDgu7/69PfGrls18C3PxKg1pD/v7DQTg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/array-float64': 0.0.6 + '@stdlib/array-uint32': 0.0.6 + '@stdlib/assert-is-little-endian': 0.0.7 + '@stdlib/os-byte-order': 0.0.7 + '@stdlib/os-float-word-order': 0.0.7 + '@stdlib/types': 0.0.14 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/os-byte-order@0.0.7: + resolution: {integrity: sha512-rRJWjFM9lOSBiIX4zcay7BZsqYBLoE32Oz/Qfim8cv1cN1viS5D4d3DskRJcffw7zXDnG3oZAOw5yZS0FnlyUg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/assert-is-big-endian': 0.0.7 + '@stdlib/assert-is-little-endian': 0.0.7 + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-read-file': 0.0.8 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/os-float-word-order@0.0.7: + resolution: {integrity: sha512-gXIcIZf+ENKP7E41bKflfXmPi+AIfjXW/oU+m8NbP3DQasqHaZa0z5758qvnbO8L1lRJb/MzLOkIY8Bx/0cWEA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-read-file': 0.0.8 + '@stdlib/os-byte-order': 0.0.7 + '@stdlib/utils-library-manifest': 0.0.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/process-cwd@0.0.8: + resolution: {integrity: sha512-GHINpJgSlKEo9ODDWTHp0/Zc/9C/qL92h5Mc0QlIFBXAoUjy6xT4FB2U16wCNZMG3eVOzt5+SjmCwvGH0Wbg3Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-read-file': 0.0.8 + dev: true + + /@stdlib/process-read-stdin@0.0.7: + resolution: {integrity: sha512-nep9QZ5iDGrRtrZM2+pYAvyCiYG4HfO0/9+19BiLJepjgYq4GKeumPAQo22+1xawYDL7Zu62uWzYszaVZcXuyw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-is-function': 0.0.8 + '@stdlib/assert-is-string': 0.0.8 + '@stdlib/buffer-ctor': 0.0.7 + '@stdlib/buffer-from-string': 0.0.8 + '@stdlib/streams-node-stdin': 0.0.7 + '@stdlib/utils-next-tick': 0.0.8 + dev: true + + /@stdlib/regexp-eol@0.0.7: + resolution: {integrity: sha512-BTMpRWrmlnf1XCdTxOrb8o6caO2lmu/c80XSyhYCi1DoizVIZnqxOaN5yUJNCr50g28vQ47PpsT3Yo7J3SdlRA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-has-own-property': 0.0.7 + '@stdlib/assert-is-boolean': 0.0.8 + '@stdlib/assert-is-plain-object': 0.0.7 + '@stdlib/assert-is-string': 0.0.8 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + dev: true + + /@stdlib/regexp-extended-length-path@0.0.7: + resolution: {integrity: sha512-z6uqzMWq3WPDKbl4MIZJoNA5ZsYLQI9G3j2TIvhU8X2hnhlku8p4mvK9F+QmoVvgPxKliwNnx/DAl7ltutSDKw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + dev: true + + /@stdlib/regexp-function-name@0.0.7: + resolution: {integrity: sha512-MaiyFUUqkAUpUoz/9F6AMBuMQQfA9ssQfK16PugehLQh4ZtOXV1LhdY8e5Md7SuYl9IrvFVg1gSAVDysrv5ZMg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + dev: true + + /@stdlib/regexp-regexp@0.0.8: + resolution: {integrity: sha512-S5PZICPd/XRcn1dncVojxIDzJsHtEleuJHHD7ji3o981uPHR7zI2Iy9a1eV2u7+ABeUswbI1Yuix6fXJfcwV1w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 + dev: true + + /@stdlib/streams-node-stdin@0.0.7: + resolution: {integrity: sha512-gg4lgrjuoG3V/L29wNs32uADMCqepIcmoOFHJCTAhVe0GtHDLybUVnLljaPfdvmpPZmTvmusPQtIcscbyWvAyg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dev: true + + /@stdlib/string-base-format-interpolate@0.0.4: + resolution: {integrity: sha512-8FC8+/ey+P5hf1B50oXpXzRzoAgKI1rikpyKZ98Xmjd5rcbSq3NWYi8TqOF8mUHm9hVZ2CXWoNCtEe2wvMQPMg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dev: true + + /@stdlib/string-base-format-tokenize@0.0.4: + resolution: {integrity: sha512-+vMIkheqAhDeT/iF5hIQo95IMkt5IzC68eR3CxW1fhc48NMkKFE2UfN73ET8fmLuOanLo/5pO2E90c2G7PExow==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dev: true + + /@stdlib/string-format@0.0.3: + resolution: {integrity: sha512-1jiElUQXlI/tTkgRuzJi9jUz/EjrO9kzS8VWHD3g7gdc3ZpxlA5G9JrIiPXGw/qmZTi0H1pXl6KmX+xWQEQJAg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/string-base-format-interpolate': 0.0.4 + '@stdlib/string-base-format-tokenize': 0.0.4 + dev: true + + /@stdlib/string-lowercase@0.0.9: + resolution: {integrity: sha512-tXFFjbhIlDak4jbQyV1DhYiSTO8b1ozS2g/LELnsKUjIXECDKxGFyWYcz10KuyAWmFotHnCJdIm8/blm2CfDIA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/assert-is-string': 0.0.8 + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-read-file': 0.0.8 + '@stdlib/process-read-stdin': 0.0.7 + '@stdlib/streams-node-stdin': 0.0.7 + '@stdlib/string-format': 0.0.3 + dev: true + + /@stdlib/string-replace@0.0.11: + resolution: {integrity: sha512-F0MY4f9mRE5MSKpAUfL4HLbJMCbG6iUTtHAWnNeAXIvUX1XYIw/eItkA58R9kNvnr1l5B08bavnjrgTJGIKFFQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/assert-is-function': 0.0.8 + '@stdlib/assert-is-regexp': 0.0.7 + '@stdlib/assert-is-regexp-string': 0.0.9 + '@stdlib/assert-is-string': 0.0.8 + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-read-file': 0.0.8 + '@stdlib/process-read-stdin': 0.0.7 + '@stdlib/regexp-eol': 0.0.7 + '@stdlib/streams-node-stdin': 0.0.7 + '@stdlib/string-format': 0.0.3 + '@stdlib/utils-escape-regexp-string': 0.0.9 + '@stdlib/utils-regexp-from-string': 0.0.9 + dev: true + + /@stdlib/types@0.0.14: + resolution: {integrity: sha512-AP3EI9/il/xkwUazcoY+SbjtxHRrheXgSbWZdEGD+rWpEgj6n2i63hp6hTOpAB5NipE0tJwinQlDGOuQ1lCaCw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dev: true + + /@stdlib/utils-constructor-name@0.0.8: + resolution: {integrity: sha512-GXpyNZwjN8u3tyYjL2GgGfrsxwvfogUC3gg7L7NRZ1i86B6xmgfnJUYHYOUnSfB+R531ET7NUZlK52GxL7P82Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-is-buffer': 0.0.8 + '@stdlib/regexp-function-name': 0.0.7 + '@stdlib/utils-native-class': 0.0.8 + dev: true + + /@stdlib/utils-convert-path@0.0.8: + resolution: {integrity: sha512-GNd8uIswrcJCctljMbmjtE4P4oOjhoUIfMvdkqfSrRLRY+ZqPB2xM+yI0MQFfUq/0Rnk/xtESlGSVLz9ZDtXfA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/assert-is-string': 0.0.8 + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-read-file': 0.0.8 + '@stdlib/process-read-stdin': 0.0.7 + '@stdlib/regexp-eol': 0.0.7 + '@stdlib/regexp-extended-length-path': 0.0.7 + '@stdlib/streams-node-stdin': 0.0.7 + '@stdlib/string-lowercase': 0.0.9 + '@stdlib/string-replace': 0.0.11 + dev: true + + /@stdlib/utils-define-nonenumerable-read-only-property@0.0.7: + resolution: {integrity: sha512-c7dnHDYuS4Xn3XBRWIQBPcROTtP/4lkcFyq0FrQzjXUjimfMgHF7cuFIIob6qUTnU8SOzY9p0ydRR2QJreWE6g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/types': 0.0.14 + '@stdlib/utils-define-property': 0.0.9 + dev: true + + /@stdlib/utils-define-property@0.0.9: + resolution: {integrity: sha512-pIzVvHJvVfU/Lt45WwUAcodlvSPDDSD4pIPc9WmIYi4vnEBA9U7yHtiNz2aTvfGmBMTaLYTVVFIXwkFp+QotMA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/types': 0.0.14 + dev: true + + /@stdlib/utils-escape-regexp-string@0.0.9: + resolution: {integrity: sha512-E+9+UDzf2mlMLgb+zYrrPy2FpzbXh189dzBJY6OG+XZqEJAXcjWs7DURO5oGffkG39EG5KXeaQwDXUavcMDCIw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-is-string': 0.0.8 + '@stdlib/string-format': 0.0.3 + dev: true + + /@stdlib/utils-get-prototype-of@0.0.7: + resolution: {integrity: sha512-fCUk9lrBO2ELrq+/OPJws1/hquI4FtwG0SzVRH6UJmJfwb1zoEFnjcwyDAy+HWNVmo3xeRLsrz6XjHrJwer9pg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-is-function': 0.0.8 + '@stdlib/utils-native-class': 0.0.8 + dev: true + + /@stdlib/utils-global@0.0.7: + resolution: {integrity: sha512-BBNYBdDUz1X8Lhfw9nnnXczMv9GztzGpQ88J/6hnY7PHJ71av5d41YlijWeM9dhvWjnH9I7HNE3LL7R07yw0kA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-is-boolean': 0.0.8 + dev: true + + /@stdlib/utils-library-manifest@0.0.8: + resolution: {integrity: sha512-IOQSp8skSRQn9wOyMRUX9Hi0j/P5v5TvD8DJWTqtE8Lhr8kVVluMBjHfvheoeKHxfWAbNHSVpkpFY/Bdh/SHgQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + hasBin: true + dependencies: + '@stdlib/cli-ctor': 0.0.3 + '@stdlib/fs-resolve-parent-path': 0.0.8 + '@stdlib/utils-convert-path': 0.0.8 + debug: 2.6.9 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@stdlib/utils-native-class@0.0.8: + resolution: {integrity: sha512-0Zl9me2V9rSrBw/N8o8/9XjmPUy8zEeoMM0sJmH3N6C9StDsYTjXIAMPGzYhMEWaWHvGeYyNteFK2yDOVGtC3w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-has-own-property': 0.0.7 + '@stdlib/assert-has-tostringtag-support': 0.0.9 + dev: true + + /@stdlib/utils-next-tick@0.0.8: + resolution: {integrity: sha512-l+hPl7+CgLPxk/gcWOXRxX/lNyfqcFCqhzzV/ZMvFCYLY/wI9lcWO4xTQNMALY2rp+kiV+qiAiO9zcO+hewwUg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dev: true + + /@stdlib/utils-noop@0.0.14: + resolution: {integrity: sha512-A5faFEUfszMgd93RCyB+aWb62hQxgP+dZ/l9rIOwNWbIrCYNwSuL4z50lNJuatnwwU4BQ4EjQr+AmBsnvuLcyQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dev: true + + /@stdlib/utils-regexp-from-string@0.0.9: + resolution: {integrity: sha512-3rN0Mcyiarl7V6dXRjFAUMacRwe0/sYX7ThKYurf0mZkMW9tjTP+ygak9xmL9AL0QQZtbrFFwWBrDO+38Vnavw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/assert-is-string': 0.0.8 + '@stdlib/regexp-regexp': 0.0.8 + '@stdlib/string-format': 0.0.3 + dev: true + + /@stdlib/utils-type-of@0.0.8: + resolution: {integrity: sha512-b4xqdy3AnnB7NdmBBpoiI67X4vIRxvirjg3a8BfhM5jPr2k0njby1jAbG9dUxJvgAV6o32S4kjUgfIdjEYpTNQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + dependencies: + '@stdlib/utils-constructor-name': 0.0.8 + '@stdlib/utils-global': 0.0.7 + dev: true + /@testing-library/dom@9.3.0: resolution: {integrity: sha512-Dffe68pGwI6WlLRYR2I0piIkyole9cSBH5jGQKCGMRpHW5RHCqAUaqc2Kv0tUyd4dU4DLPKhJIjyKOnjv4tuUw==} engines: {node: '>=14'} @@ -4684,6 +5802,10 @@ packages: path-type: 4.0.0 dev: true + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: true + /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -4714,6 +5836,11 @@ packages: webidl-conversions: 5.0.0 dev: true + /dset@3.1.3: + resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} + engines: {node: '>=4'} + dev: true + /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: true @@ -7285,6 +8412,11 @@ packages: resolution: {integrity: sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==} dev: true + /js-cookie@3.0.1: + resolution: {integrity: sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==} + engines: {node: '>=12'} + dev: true + /js-levenshtein@1.1.6: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} engines: {node: '>=0.10.0'} @@ -8070,6 +9202,12 @@ packages: engines: {node: '>= 0.6'} dev: true + /new-date@1.0.3: + resolution: {integrity: sha512-0fsVvQPbo2I18DT2zVHpezmeeNYV2JaJSrseiHLc17GNOxJzUdx5mvSigPu8LtIfZSij5i1wXnXFspEs2CD6hA==} + dependencies: + '@segment/isodate': 1.0.3 + dev: true + /newtype-ts@0.3.5(fp-ts@2.16.2)(monocle-ts@2.3.13): resolution: {integrity: sha512-v83UEQMlVR75yf1OUdoSFssjitxzjZlqBAjiGQ4WJaML8Jdc68LJ+BaSAXUmKY4bNzp7hygkKLYTsDi14PxI2g==} peerDependencies: @@ -8148,6 +9286,10 @@ packages: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} dev: true + /obj-case@0.2.1: + resolution: {integrity: sha512-PquYBBTy+Y6Ob/O2574XHhDtHJlV1cJHMCgW+rDRc9J5hhmRelJB3k5dTK/3cVmFVtzvAKuENeuLpoyTzMzkOg==} + dev: true + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -9544,6 +10686,10 @@ packages: engines: {node: '>= 8'} dev: true + /spark-md5@3.0.2: + resolution: {integrity: sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==} + dev: true + /split-string@3.1.0: resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} engines: {node: '>=0.10.0'} @@ -10079,6 +11225,10 @@ packages: resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} dev: true + /tiny-hashes@1.0.1: + resolution: {integrity: sha512-knIN5zj4fl7kW4EBU5sLP20DWUvi/rVouvJezV0UAym2DkQaqm365Nyc8F3QEiOvunNDMxR8UhcXd1d5g+Wg1g==} + dev: true + /tinycolor2@1.4.2: resolution: {integrity: sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==} dev: true @@ -10326,6 +11476,14 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /unfetch@3.1.2: + resolution: {integrity: sha512-L0qrK7ZeAudGiKYw6nzFjnJ2D5WHblUBwmHIqtPS6oKUd+Hcpk7/hKsSmcHsTlpd1TbTNsiRBUKRq3bHLNIqIw==} + dev: true + + /unfetch@4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + dev: true + /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} diff --git a/src/extensions/segment-integration.ts b/src/extensions/segment-integration.ts index 61aff59c5..dbacfb57f 100644 --- a/src/extensions/segment-integration.ts +++ b/src/extensions/segment-integration.ts @@ -19,38 +19,17 @@ import { PostHog } from '../posthog-core' import { logger } from '../utils/logger' -// Loosely based on https://github.com/segmentio/analytics-next/blob/master/packages/core/src/plugins/index.ts -interface SegmentPluginContext { - event: { - event: string - userId?: string - anonymousId?: string - properties: any - } -} - -interface SegmentPlugin { - name: string - version: string - type: 'enrichment' - isLoaded: () => boolean - load: (ctx: SegmentPluginContext, instance: any, config?: any) => Promise - unload?: (ctx: SegmentPluginContext, instance: any) => Promise | unknown - ready?: () => Promise - track?: (ctx: SegmentPluginContext) => Promise | SegmentPluginContext - identify?: (ctx: SegmentPluginContext) => Promise | SegmentPluginContext - page?: (ctx: SegmentPluginContext) => Promise | SegmentPluginContext - group?: (ctx: SegmentPluginContext) => Promise | SegmentPluginContext - alias?: (ctx: SegmentPluginContext) => Promise | SegmentPluginContext - screen?: (ctx: SegmentPluginContext) => Promise | SegmentPluginContext -} +import type { Plugin as SegmentPlugin, Context as SegmentContext } from '@segment/analytics-next' export const createSegmentIntegration = (posthog: PostHog): SegmentPlugin => { if (!Promise || !Promise.resolve) { logger.warn('This browser does not have Promise support, and can not use the segment integration') } - const enrichEvent = (ctx: SegmentPluginContext, eventName: string) => { + const enrichEvent = (ctx: SegmentContext, eventName: string | undefined) => { + if (!eventName) { + return ctx + } if (!ctx.event.userId && ctx.event.anonymousId !== posthog.get_distinct_id()) { // This is our only way of detecting that segment's analytics.reset() has been called so we also call it posthog.reset() @@ -62,7 +41,7 @@ export const createSegmentIntegration = (posthog: PostHog): SegmentPlugin => { posthog.reloadFeatureFlags() } - const additionalProperties = posthog._calculate_event_properties(eventName, ctx.event.properties) + const additionalProperties = posthog._calculate_event_properties(eventName, ctx.event.properties ?? {}) ctx.event.properties = Object.assign({}, additionalProperties, ctx.event.properties) return ctx } diff --git a/src/posthog-core.ts b/src/posthog-core.ts index c8ebf6328..148611e9c 100644 --- a/src/posthog-core.ts +++ b/src/posthog-core.ts @@ -386,13 +386,14 @@ export class PostHog { this._gdpr_init() if (config.segment) { + const segmentUser = config.segment.user() // Use segments anonymousId instead - this.config.get_device_id = () => config.segment.user().anonymousId() + this.config.get_device_id = () => segmentUser.anonymousId() || uuidv7() // If a segment user ID exists, set it as the distinct_id - if (config.segment.user().id()) { + if (segmentUser.id()) { this.register({ - distinct_id: config.segment.user().id(), + distinct_id: segmentUser.id(), }) this.persistence.set_user_state('identified') } diff --git a/src/types.ts b/src/types.ts index 7d9463e0c..824e65568 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,3 +1,4 @@ +import type { AnalyticsSnippet } from '@segment/analytics-next' import type { MaskInputOptions, SlimDOMOptions } from 'rrweb-snapshot' import { PostHog } from './posthog-core' @@ -140,7 +141,7 @@ export interface PostHogConfig { // Should only be used for testing. Could negatively impact performance. disable_compression: boolean bootstrap: BootstrapConfig - segment?: any + segment?: AnalyticsSnippet __preview_send_client_session_params?: boolean disable_scroll_properties?: boolean // Let the pageview scroll stats use a custom css selector for the root element, e.g. `main` From 88609e73eda7927ed01742b42f2e3478bf7e2d41 Mon Sep 17 00:00:00 2001 From: Ben White Date: Tue, 16 Apr 2024 10:04:07 +0200 Subject: [PATCH 2/4] Remove segment analytics --- package.json | 1 - pnpm-lock.yaml | 1158 ------------------------- src/__tests__/segment.test.ts | 95 +- src/extensions/segment-integration.ts | 60 +- src/posthog-core.ts | 22 +- src/types.ts | 4 +- 6 files changed, 124 insertions(+), 1216 deletions(-) diff --git a/package.json b/package.json index f2ab77045..c8282cb5d 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,6 @@ "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "^11.1.6", "@rrweb/types": "2.0.0-alpha.12", - "@segment/analytics-next": "^1.66.0", "@sentry/types": "7.37.2", "@testing-library/dom": "^9.3.0", "@types/eslint": "^8.44.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a565e072f..97d1fcf90 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,9 +51,6 @@ devDependencies: '@rrweb/types': specifier: 2.0.0-alpha.12 version: 2.0.0-alpha.12 - '@segment/analytics-next': - specifier: ^1.66.0 - version: 1.66.0 '@sentry/types': specifier: 7.37.2 version: 7.37.2 @@ -2390,18 +2387,6 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@lukeed/csprng@1.1.0: - resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} - engines: {node: '>=8'} - dev: true - - /@lukeed/uuid@2.0.1: - resolution: {integrity: sha512-qC72D4+CDdjGqJvkFMMEAtancHUQ7/d/tAiHf64z8MopFDmcrtbcJuerDtFceuAfQJ2pDSfCKCtbqoGBNnwg0w==} - engines: {node: '>=8'} - dependencies: - '@lukeed/csprng': 1.1.0 - dev: true - /@mdn/browser-compat-data@5.2.61: resolution: {integrity: sha512-jzPrheqEtrnUWWNUS8SFVbQAnoO6rOXetkjiJyzP92UM+BNcyExLD0Qikv9z6TU9D6A9rbXkh3pSmZ5G88d6ew==} dev: true @@ -2670,78 +2655,6 @@ packages: rrweb-snapshot: 2.0.0-alpha.12 dev: true - /@segment/analytics-core@1.5.0: - resolution: {integrity: sha512-xFM9sS4ltRWDnNE6bD/bwLAGGBI1Doidf35J6ePyuOfecZ7c0sADtk9xR1QD98CDDFVaQcrfV/O1l4rBZvCm4A==} - dependencies: - '@lukeed/uuid': 2.0.1 - '@segment/analytics-generic-utils': 1.2.0 - dset: 3.1.3 - tslib: 2.5.0 - dev: true - - /@segment/analytics-generic-utils@1.2.0: - resolution: {integrity: sha512-DfnW6mW3YQOLlDQQdR89k4EqfHb0g/3XvBXkovH1FstUN93eL1kfW9CsDcVQyH3bAC5ZsFyjA/o/1Q2j0QeoWw==} - dependencies: - tslib: 2.5.0 - dev: true - - /@segment/analytics-next@1.66.0: - resolution: {integrity: sha512-euCOLXUAAfcd/kI5FkCrOJ+Sp3QuCn3f9/1U5J+rly+lfqczKqw4x7A5aon6X3ncBJjfEP3gt9OZdcmgco18Ow==} - dependencies: - '@lukeed/uuid': 2.0.1 - '@segment/analytics-core': 1.5.0 - '@segment/analytics-generic-utils': 1.2.0 - '@segment/analytics.js-video-plugins': 0.2.1 - '@segment/facade': 3.4.10 - '@segment/tsub': 2.0.0 - dset: 3.1.3 - js-cookie: 3.0.1 - node-fetch: 2.6.11 - spark-md5: 3.0.2 - tslib: 2.5.0 - unfetch: 4.2.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@segment/analytics.js-video-plugins@0.2.1: - resolution: {integrity: sha512-lZwCyEXT4aaHBLNK433okEKdxGAuyrVmop4BpQqQSJuRz0DglPZgd9B/XjiiWs1UyOankg2aNYMN3VcS8t4eSQ==} - dependencies: - unfetch: 3.1.2 - dev: true - - /@segment/facade@3.4.10: - resolution: {integrity: sha512-xVQBbB/lNvk/u8+ey0kC/+g8pT3l0gCT8O2y9Z+StMMn3KAFAQ9w8xfgef67tJybktOKKU7pQGRPolRM1i1pdA==} - dependencies: - '@segment/isodate-traverse': 1.1.1 - inherits: 2.0.4 - new-date: 1.0.3 - obj-case: 0.2.1 - dev: true - - /@segment/isodate-traverse@1.1.1: - resolution: {integrity: sha512-+G6e1SgAUkcq0EDMi+SRLfT48TNlLPF3QnSgFGVs0V9F3o3fq/woQ2rHFlW20W0yy5NnCUH0QGU3Am2rZy/E3w==} - dependencies: - '@segment/isodate': 1.0.3 - dev: true - - /@segment/isodate@1.0.3: - resolution: {integrity: sha512-BtanDuvJqnACFkeeYje7pWULVv8RgZaqKHWwGFnL/g/TH/CcZjkIVTfGDp/MAxmilYHUkrX70SqwnYSTNEaN7A==} - dev: true - - /@segment/tsub@2.0.0: - resolution: {integrity: sha512-NzkBK8GwPsyQ74AceLjENbUoaFrObnzEKOX4ko2wZDuIyK+DnDm3B//8xZYI2LCKt+wUD55l6ygfjCoVs8RMWw==} - hasBin: true - dependencies: - '@stdlib/math-base-special-ldexp': 0.0.5 - dlv: 1.1.3 - dset: 3.1.3 - tiny-hashes: 1.0.1 - transitivePeerDependencies: - - supports-color - dev: true - /@sentry/types@7.37.2: resolution: {integrity: sha512-SxKQOCX94ZaQM4C2ysNjHdJsjYapu/NYZCz1cnPyCdDvYfhwiVge1uq6ZHiQ/ARfxAAOmc3R4Mh3VvEz7WUOdw==} engines: {node: '>=8'} @@ -2788,1037 +2701,6 @@ packages: resolution: {integrity: sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==} dev: true - /@stdlib/array-float32@0.0.6: - resolution: {integrity: sha512-QgKT5UaE92Rv7cxfn7wBKZAlwFFHPla8eXsMFsTGt5BiL4yUy36lwinPUh4hzybZ11rw1vifS3VAPuk6JP413Q==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-float32array-support': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/array-float64@0.0.6: - resolution: {integrity: sha512-oE8y4a84LyBF1goX5//sU1mOjet8gLI0/6wucZcjg+j/yMmNV1xFu84Az9GOGmFSE6Ze6lirGOhfBeEWNNNaJg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-float64array-support': 0.0.8 - dev: true - - /@stdlib/array-uint16@0.0.6: - resolution: {integrity: sha512-/A8Tr0CqJ4XScIDRYQawosko8ha1Uy+50wsTgJhjUtXDpPRp7aUjmxvYkbe7Rm+ImYYbDQVix/uCiPAFQ8ed4Q==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-uint16array-support': 0.0.8 - dev: true - - /@stdlib/array-uint32@0.0.6: - resolution: {integrity: sha512-2hFPK1Fg7obYPZWlGDjW9keiIB6lXaM9dKmJubg/ergLQCsJQJZpYsG6mMAfTJi4NT1UF4jTmgvyKD+yf0D9cA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-uint32array-support': 0.0.8 - dev: true - - /@stdlib/array-uint8@0.0.7: - resolution: {integrity: sha512-qYJQQfGKIcky6TzHFIGczZYTuVlut7oO+V8qUBs7BJC9TwikVnnOmb3hY3jToY4xaoi5p9OvgdJKPInhyIhzFg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-uint8array-support': 0.0.8 - dev: true - - /@stdlib/assert-has-float32array-support@0.0.8: - resolution: {integrity: sha512-Yrg7K6rBqwCzDWZ5bN0VWLS5dNUWcoSfUeU49vTERdUmZID06J069CDc07UUl8vfQWhFgBWGocH3rrpKm1hi9w==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/assert-is-float32array': 0.0.8 - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/constants-float64-pinf': 0.0.8 - '@stdlib/fs-read-file': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/assert-has-float64array-support@0.0.8: - resolution: {integrity: sha512-UVQcoeWqgMw9b8PnAmm/sgzFnuWkZcNhJoi7xyMjbiDV/SP1qLCrvi06mq86cqS3QOCma1fEayJdwgteoXyyuw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/assert-is-float64array': 0.0.8 - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-read-file': 0.0.8 - dev: true - - /@stdlib/assert-has-node-buffer-support@0.0.8: - resolution: {integrity: sha512-fgI+hW4Yg4ciiv4xVKH+1rzdV7e5+6UKgMnFbc1XDXHcxLub3vOr8+H6eDECdAIfgYNA7X0Dxa/DgvX9dwDTAQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/assert-is-buffer': 0.0.8 - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-read-file': 0.0.8 - dev: true - - /@stdlib/assert-has-own-property@0.0.7: - resolution: {integrity: sha512-3YHwSWiUqGlTLSwxAWxrqaD1PkgcJniGyotJeIt5X0tSNmSW0/c9RWroCImTUUB3zBkyBJ79MyU9Nf4Qgm59fQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: true - - /@stdlib/assert-has-symbol-support@0.0.8: - resolution: {integrity: sha512-PoQ9rk8DgDCuBEkOIzGGQmSnjtcdagnUIviaP5YskB45/TJHXseh4NASWME8FV77WFW9v/Wt1MzKFKMzpDFu4Q==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-read-file': 0.0.8 - dev: true - - /@stdlib/assert-has-tostringtag-support@0.0.9: - resolution: {integrity: sha512-UTsqdkrnQ7eufuH5BeyWOJL3ska3u5nvDWKqw3onNNZ2mvdgkfoFD7wHutVGzAA2rkTsSJAMBHVwWLsm5SbKgw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/assert-has-symbol-support': 0.0.8 - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-read-file': 0.0.8 - dev: true - - /@stdlib/assert-has-uint16array-support@0.0.8: - resolution: {integrity: sha512-vqFDn30YrtzD+BWnVqFhB130g3cUl2w5AdOxhIkRkXCDYAM5v7YwdNMJEON+D4jI8YB4D5pEYjqKweYaCq4nyg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/assert-is-uint16array': 0.0.8 - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/constants-uint16-max': 0.0.7 - '@stdlib/fs-read-file': 0.0.8 - dev: true - - /@stdlib/assert-has-uint32array-support@0.0.8: - resolution: {integrity: sha512-tJtKuiFKwFSQQUfRXEReOVGXtfdo6+xlshSfwwNWXL1WPP2LrceoiUoQk7zMCMT6VdbXgGH92LDjVcPmSbH4Xw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/assert-is-uint32array': 0.0.8 - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/constants-uint32-max': 0.0.7 - '@stdlib/fs-read-file': 0.0.8 - dev: true - - /@stdlib/assert-has-uint8array-support@0.0.8: - resolution: {integrity: sha512-ie4vGTbAS/5Py+LLjoSQi0nwtYBp+WKk20cMYCzilT0rCsBI/oez0RqHrkYYpmt4WaJL4eJqC+/vfQ5NsI7F5w==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/assert-is-uint8array': 0.0.8 - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/constants-uint8-max': 0.0.7 - '@stdlib/fs-read-file': 0.0.8 - dev: true - - /@stdlib/assert-is-array@0.0.7: - resolution: {integrity: sha512-/o6KclsGkNcZ5hiROarsD9XUs6xQMb4lTwF6O71UHbKWTtomEF/jD0rxLvlvj0BiCxfKrReddEYd2CnhUyskMA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-native-class': 0.0.8 - dev: true - - /@stdlib/assert-is-big-endian@0.0.7: - resolution: {integrity: sha512-BvutsX84F76YxaSIeS5ZQTl536lz+f+P7ew68T1jlFqxBhr4v7JVYFmuf24U040YuK1jwZ2sAq+bPh6T09apwQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/array-uint16': 0.0.6 - '@stdlib/array-uint8': 0.0.7 - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-read-file': 0.0.8 - dev: true - - /@stdlib/assert-is-boolean@0.0.8: - resolution: {integrity: sha512-PRCpslMXSYqFMz1Yh4dG2K/WzqxTCtlKbgJQD2cIkAtXux4JbYiXCtepuoV7l4Wv1rm0a1eU8EqNPgnOmWajGw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-tostringtag-support': 0.0.9 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - '@stdlib/utils-native-class': 0.0.8 - dev: true - - /@stdlib/assert-is-buffer@0.0.8: - resolution: {integrity: sha512-SYmGwOXkzZVidqUyY1IIx6V6QnSL36v3Lcwj8Rvne/fuW0bU2OomsEBzYCFMvcNgtY71vOvgZ9VfH3OppvV6eA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-object-like': 0.0.8 - dev: true - - /@stdlib/assert-is-float32array@0.0.8: - resolution: {integrity: sha512-Phk0Ze7Vj2/WLv5Wy8Oo7poZIDMSTiTrEnc1t4lBn3Svz2vfBXlvCufi/i5d93vc4IgpkdrOEwfry6nldABjNQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-native-class': 0.0.8 - dev: true - - /@stdlib/assert-is-float64array@0.0.8: - resolution: {integrity: sha512-UC0Av36EEYIgqBbCIz1lj9g7qXxL5MqU1UrWun+n91lmxgdJ+Z77fHy75efJbJlXBf6HXhcYXECIsc0u3SzyDQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-native-class': 0.0.8 - dev: true - - /@stdlib/assert-is-function@0.0.8: - resolution: {integrity: sha512-M55Dt2njp5tnY8oePdbkKBRIypny+LpCMFZhEjJIxjLE4rA6zSlHs1yRMqD4PmW+Wl9WTeEM1GYO4AQHl1HAjA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-type-of': 0.0.8 - dev: true - - /@stdlib/assert-is-little-endian@0.0.7: - resolution: {integrity: sha512-SPObC73xXfDXY0dOewXR0LDGN3p18HGzm+4K8azTj6wug0vpRV12eB3hbT28ybzRCa6TAKUjwM/xY7Am5QzIlA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/array-uint16': 0.0.6 - '@stdlib/array-uint8': 0.0.7 - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-read-file': 0.0.8 - dev: true - - /@stdlib/assert-is-number@0.0.7: - resolution: {integrity: sha512-mNV4boY1cUOmoWWfA2CkdEJfXA6YvhcTvwKC0Fzq+HoFFOuTK/scpTd9HanUyN6AGBlWA8IW+cQ1ZwOT3XMqag==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-tostringtag-support': 0.0.9 - '@stdlib/number-ctor': 0.0.7 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - '@stdlib/utils-native-class': 0.0.8 - dev: true - - /@stdlib/assert-is-object-like@0.0.8: - resolution: {integrity: sha512-pe9selDPYAu/lYTFV5Rj4BStepgbzQCr36b/eC8EGSJh6gMgRXgHVv0R+EbdJ69KNkHvKKRjnWj0A/EmCwW+OA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-tools-array-function': 0.0.7 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - dev: true - - /@stdlib/assert-is-object@0.0.8: - resolution: {integrity: sha512-ooPfXDp9c7w+GSqD2NBaZ/Du1JRJlctv+Abj2vRJDcDPyrnRTb1jmw+AuPgcW7Ca7op39JTbArI+RVHm/FPK+Q==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-array': 0.0.7 - dev: true - - /@stdlib/assert-is-plain-object@0.0.7: - resolution: {integrity: sha512-t/CEq2a083ajAgXgSa5tsH8l3kSoEqKRu1qUwniVLFYL4RGv3615CrpJUDQKVtEX5S/OKww5q0Byu3JidJ4C5w==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-own-property': 0.0.7 - '@stdlib/assert-is-function': 0.0.8 - '@stdlib/assert-is-object': 0.0.8 - '@stdlib/utils-get-prototype-of': 0.0.7 - '@stdlib/utils-native-class': 0.0.8 - dev: true - - /@stdlib/assert-is-regexp-string@0.0.9: - resolution: {integrity: sha512-FYRJJtH7XwXEf//X6UByUC0Eqd0ZYK5AC8or5g5m5efQrgr2lOaONHyDQ3Scj1A2D6QLIJKZc9XBM4uq5nOPXA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/assert-is-string': 0.0.8 - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-read-file': 0.0.8 - '@stdlib/process-read-stdin': 0.0.7 - '@stdlib/regexp-eol': 0.0.7 - '@stdlib/regexp-regexp': 0.0.8 - '@stdlib/streams-node-stdin': 0.0.7 - dev: true - - /@stdlib/assert-is-regexp@0.0.7: - resolution: {integrity: sha512-ty5qvLiqkDq6AibHlNJe0ZxDJ9Mg896qolmcHb69mzp64vrsORnPPOTzVapAq0bEUZbXoypeijypLPs9sCGBSQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-tostringtag-support': 0.0.9 - '@stdlib/utils-native-class': 0.0.8 - dev: true - - /@stdlib/assert-is-string@0.0.8: - resolution: {integrity: sha512-Uk+bR4cglGBbY0q7O7HimEJiW/DWnO1tSzr4iAGMxYgf+VM2PMYgI5e0TLy9jOSOzWon3YS39lc63eR3a9KqeQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-tostringtag-support': 0.0.9 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - '@stdlib/utils-native-class': 0.0.8 - dev: true - - /@stdlib/assert-is-uint16array@0.0.8: - resolution: {integrity: sha512-M+qw7au+qglRXcXHjvoUZVLlGt1mPjuKudrVRto6KL4+tDsP2j+A89NDP3Fz8/XIUD+5jhj+65EOKHSMvDYnng==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-native-class': 0.0.8 - dev: true - - /@stdlib/assert-is-uint32array@0.0.8: - resolution: {integrity: sha512-cnZi2DicYcplMnkJ3dBxBVKsRNFjzoGpmG9A6jXq4KH5rFl52SezGAXSVY9o5ZV7bQGaF5JLyCLp6n9Y74hFGg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-native-class': 0.0.8 - dev: true - - /@stdlib/assert-is-uint8array@0.0.8: - resolution: {integrity: sha512-8cqpDQtjnJAuVtRkNAktn45ixq0JHaGJxVsSiK79k7GRggvMI6QsbzO6OvcLnZ/LimD42FmgbLd13Yc2esDmZw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-native-class': 0.0.8 - dev: true - - /@stdlib/assert-tools-array-function@0.0.7: - resolution: {integrity: sha512-3lqkaCIBMSJ/IBHHk4NcCnk2NYU52tmwTYbbqhAmv7vim8rZPNmGfj3oWkzrCsyCsyTF7ooD+In2x+qTmUbCtQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-array': 0.0.7 - dev: true - - /@stdlib/buffer-ctor@0.0.7: - resolution: {integrity: sha512-4IyTSGijKUQ8+DYRaKnepf9spvKLZ+nrmZ+JrRcB3FrdTX/l9JDpggcUcC/Fe+A4KIZOnClfxLn6zfIlkCZHNA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-node-buffer-support': 0.0.8 - dev: true - - /@stdlib/buffer-from-string@0.0.8: - resolution: {integrity: sha512-Dws5ZbK2M9l4Bkn/ODHFm3lNZ8tWko+NYXqGS/UH/RIQv3PGp+1tXFUSvjwjDneM6ppjQVExzVedUH1ftABs9A==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-function': 0.0.8 - '@stdlib/assert-is-string': 0.0.8 - '@stdlib/buffer-ctor': 0.0.7 - '@stdlib/string-format': 0.0.3 - dev: true - - /@stdlib/cli-ctor@0.0.3: - resolution: {integrity: sha512-0zCuZnzFyxj66GoF8AyIOhTX5/mgGczFvr6T9h4mXwegMZp8jBC/ZkOGMwmp+ODLBTvlcnnDNpNFkDDyR6/c2g==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - '@stdlib/utils-noop': 0.0.14 - minimist: 1.2.8 - dev: true - - /@stdlib/complex-float32@0.0.7: - resolution: {integrity: sha512-POCtQcBZnPm4IrFmTujSaprR1fcOFr/MRw2Mt7INF4oed6b1nzeG647K+2tk1m4mMrMPiuXCdvwJod4kJ0SXxQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-number': 0.0.7 - '@stdlib/number-float64-base-to-float32': 0.0.7 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - '@stdlib/utils-define-property': 0.0.9 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/complex-float64@0.0.8: - resolution: {integrity: sha512-lUJwsXtGEziOWAqCcnKnZT4fcVoRsl6t6ECaCJX45Z7lAc70yJLiwUieLWS5UXmyoADHuZyUXkxtI4oClfpnaw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-number': 0.0.7 - '@stdlib/complex-float32': 0.0.7 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - '@stdlib/utils-define-property': 0.0.9 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/complex-reim@0.0.6: - resolution: {integrity: sha512-28WXfPSIFMtHb0YgdatkGS4yxX5sPYea5MiNgqPv3E78+tFcg8JJG52NQ/MviWP2wsN9aBQAoCPeu8kXxSPdzA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float64': 0.0.6 - '@stdlib/complex-float64': 0.0.8 - '@stdlib/types': 0.0.14 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/complex-reimf@0.0.1: - resolution: {integrity: sha512-P9zu05ZW2i68Oppp3oHelP7Tk0D7tGBL0hGl1skJppr2vY9LltuNbeYI3C96tQe/7Enw/5GyAWgxoQI4cWccQA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float32': 0.0.6 - '@stdlib/complex-float32': 0.0.7 - '@stdlib/types': 0.0.14 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/constants-float64-exponent-bias@0.0.8: - resolution: {integrity: sha512-IzBJQw9hYgWCki7VoC/zJxEA76Nmf8hmY+VkOWnJ8IyfgTXClgY8tfDGS1cc4l/hCOEllxGp9FRvVdn24A5tKQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/constants-float64-high-word-abs-mask@0.0.1: - resolution: {integrity: sha512-1vy8SUyMHFBwqUUVaZFA7r4/E3cMMRKSwsaa/EZ15w7Kmc01W/ZmaaTLevRcIdACcNgK+8i8813c8H7LScXNcQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/constants-float64-high-word-exponent-mask@0.0.8: - resolution: {integrity: sha512-z28/EQERc0VG7N36bqdvtrRWjFc8600PKkwvl/nqx6TpKAzMXNw55BS1xT4C28Sa9Z7uBWeUj3UbIFedbkoyMw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/constants-float64-high-word-sign-mask@0.0.1: - resolution: {integrity: sha512-hmTr5caK1lh1m0eyaQqt2Vt3y+eEdAx57ndbADEbXhxC9qSGd0b4bLSzt/Xp4MYBYdQkHAE/BlkgUiRThswhCg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/constants-float64-max-base2-exponent-subnormal@0.0.8: - resolution: {integrity: sha512-YGBZykSiXFebznnJfWFDwhho2Q9xhUWOL+X0lZJ4ItfTTo40W6VHAyNYz98tT/gJECFype0seNzzo1nUxCE7jQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/constants-float64-max-base2-exponent@0.0.8: - resolution: {integrity: sha512-xBAOtso1eiy27GnTut2difuSdpsGxI8dJhXupw0UukGgvy/3CSsyNm+a1Suz/dhqK4tPOTe5QboIdNMw5IgXKQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/constants-float64-min-base2-exponent-subnormal@0.0.8: - resolution: {integrity: sha512-bt81nBus/91aEqGRQBenEFCyWNsf8uaxn4LN1NjgkvY92S1yVxXFlC65fJHsj9FTqvyZ+uj690/gdMKUDV3NjQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/constants-float64-ninf@0.0.8: - resolution: {integrity: sha512-bn/uuzCne35OSLsQZJlNrkvU1/40spGTm22g1+ZI1LL19J8XJi/o4iupIHRXuLSTLFDBqMoJlUNphZlWQ4l8zw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/number-ctor': 0.0.7 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/constants-float64-pinf@0.0.8: - resolution: {integrity: sha512-I3R4rm2cemoMuiDph07eo5oWZ4ucUtpuK73qBJiJPDQKz8fSjSe4wJBAigq2AmWYdd7yJHsl5NJd8AgC6mP5Qw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/constants-float64-smallest-normal@0.0.8: - resolution: {integrity: sha512-Qwxpn5NA3RXf+mQcffCWRcsHSPTUQkalsz0+JDpblDszuz2XROcXkOdDr5LKgTAUPIXsjOgZzTsuRONENhsSEg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/constants-uint16-max@0.0.7: - resolution: {integrity: sha512-7TPoku7SlskA67mAm7mykIAjeEnkQJemw1cnKZur0mT5W4ryvDR6iFfL9xBiByVnWYq/+ei7DHbOv6/2b2jizw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: true - - /@stdlib/constants-uint32-max@0.0.7: - resolution: {integrity: sha512-8+NK0ewqc1vnEZNqzwFJgFSy3S543Eft7i8WyW/ygkofiqEiLAsujvYMHzPAB8/3D+PYvjTSe37StSwRwvQ6uw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: true - - /@stdlib/constants-uint8-max@0.0.7: - resolution: {integrity: sha512-fqV+xds4jgwFxwWu08b8xDuIoW6/D4/1dtEjZ1sXVeWR7nf0pjj1cHERq4kdkYxsvOGu+rjoR3MbjzpFc4fvSw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: true - - /@stdlib/fs-exists@0.0.8: - resolution: {integrity: sha512-mZktcCxiLmycCJefm1+jbMTYkmhK6Jk1ShFmUVqJvs+Ps9/2EEQXfPbdEniLoVz4HeHLlcX90JWobUEghOOnAQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-read-file': 0.0.8 - '@stdlib/process-cwd': 0.0.8 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - dev: true - - /@stdlib/fs-read-file@0.0.8: - resolution: {integrity: sha512-pIZID/G91+q7ep4x9ECNC45+JT2j0+jdz/ZQVjCHiEwXCwshZPEvxcPQWb9bXo6coOY+zJyX5TwBIpXBxomWFg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - dev: true - - /@stdlib/fs-resolve-parent-path@0.0.8: - resolution: {integrity: sha512-ok1bTWsAziChibQE3u7EoXwbCQUDkFjjRAHSxh7WWE5JEYVJQg1F0o3bbjRr4D/wfYYPWLAt8AFIKBUDmWghpg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/assert-has-own-property': 0.0.7 - '@stdlib/assert-is-function': 0.0.8 - '@stdlib/assert-is-plain-object': 0.0.7 - '@stdlib/assert-is-string': 0.0.8 - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-exists': 0.0.8 - '@stdlib/fs-read-file': 0.0.8 - '@stdlib/process-cwd': 0.0.8 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - dev: true - - /@stdlib/math-base-assert-is-infinite@0.0.9: - resolution: {integrity: sha512-JuPDdmxd+AtPWPHu9uaLvTsnEPaZODZk+zpagziNbDKy8DRiU1cy+t+QEjB5WizZt0A5MkuxDTjZ/8/sG5GaYQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-ninf': 0.0.8 - '@stdlib/constants-float64-pinf': 0.0.8 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/math-base-assert-is-nan@0.0.8: - resolution: {integrity: sha512-m+gCVBxLFW8ZdAfdkATetYMvM7sPFoMKboacHjb1pe21jHQqVb+/4bhRSDg6S7HGX7/8/bSzEUm9zuF7vqK5rQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/math-base-napi-binary@0.0.8: - resolution: {integrity: sha512-B8d0HBPhfXefbdl/h0h5c+lM2sE+/U7Fb7hY/huVeoQtBtEx0Jbx/qKvPSVxMjmWCKfWlbPpbgKpN5GbFgLiAg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/complex-float32': 0.0.7 - '@stdlib/complex-float64': 0.0.8 - '@stdlib/complex-reim': 0.0.6 - '@stdlib/complex-reimf': 0.0.1 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/math-base-napi-unary@0.0.9: - resolution: {integrity: sha512-2WNKhjCygkGMp0RgjaD7wAHJTqPZmuVW7yPOc62Tnz2U+Ad8q/tcOcN+uvq2dtKsAGr1HDMIQxZ/XrrThMePyA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/complex-float32': 0.0.7 - '@stdlib/complex-float64': 0.0.8 - '@stdlib/complex-reim': 0.0.6 - '@stdlib/complex-reimf': 0.0.1 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/math-base-special-abs@0.0.6: - resolution: {integrity: sha512-FaaMUnYs2qIVN3kI5m/qNlBhDnjszhDOzEhxGEoQWR/k0XnxbCsTyjNesR2DkpiKuoAXAr9ojoDe2qBYdirWoQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/math-base-napi-unary': 0.0.9 - '@stdlib/number-float64-base-to-words': 0.0.7 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/math-base-special-copysign@0.0.7: - resolution: {integrity: sha512-7Br7oeuVJSBKG8BiSk/AIRFTBd2sbvHdV3HaqRj8tTZHX8BQomZ3Vj4Qsiz3kPyO4d6PpBLBTYlGTkSDlGOZJA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-high-word-abs-mask': 0.0.1 - '@stdlib/constants-float64-high-word-sign-mask': 0.0.1 - '@stdlib/math-base-napi-binary': 0.0.8 - '@stdlib/number-float64-base-from-words': 0.0.6 - '@stdlib/number-float64-base-get-high-word': 0.0.6 - '@stdlib/number-float64-base-to-words': 0.0.7 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/math-base-special-ldexp@0.0.5: - resolution: {integrity: sha512-RLRsPpCdcJZMhwb4l4B/FsmGfEPEWAsik6KYUkUSSHb7ok/gZWt8LgVScxGMpJMpl5IV0v9qG4ZINVONKjX5KA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-exponent-bias': 0.0.8 - '@stdlib/constants-float64-max-base2-exponent': 0.0.8 - '@stdlib/constants-float64-max-base2-exponent-subnormal': 0.0.8 - '@stdlib/constants-float64-min-base2-exponent-subnormal': 0.0.8 - '@stdlib/constants-float64-ninf': 0.0.8 - '@stdlib/constants-float64-pinf': 0.0.8 - '@stdlib/math-base-assert-is-infinite': 0.0.9 - '@stdlib/math-base-assert-is-nan': 0.0.8 - '@stdlib/math-base-special-copysign': 0.0.7 - '@stdlib/number-float64-base-exponent': 0.0.6 - '@stdlib/number-float64-base-from-words': 0.0.6 - '@stdlib/number-float64-base-normalize': 0.0.9 - '@stdlib/number-float64-base-to-words': 0.0.7 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/number-ctor@0.0.7: - resolution: {integrity: sha512-kXNwKIfnb10Ro3RTclhAYqbE3DtIXax+qpu0z1/tZpI2vkmTfYDQLno2QJrzJsZZgdeFtXIws+edONN9kM34ow==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: true - - /@stdlib/number-float64-base-exponent@0.0.6: - resolution: {integrity: sha512-wLXsG+cvynmapoffmj5hVNDH7BuHIGspBcTCdjPaD+tnqPDIm03qV5Z9YBhDh91BdOCuPZQ8Ovu2WBpX+ySeGg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-exponent-bias': 0.0.8 - '@stdlib/constants-float64-high-word-exponent-mask': 0.0.8 - '@stdlib/number-float64-base-get-high-word': 0.0.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/number-float64-base-from-words@0.0.6: - resolution: {integrity: sha512-r0elnekypCN831aw9Gp8+08br8HHAqvqtc5uXaxEh3QYIgBD/QM5qSb3b7WSAQ0ZxJJKdoykupODWWBkWQTijg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float64': 0.0.6 - '@stdlib/array-uint32': 0.0.6 - '@stdlib/assert-is-little-endian': 0.0.7 - '@stdlib/number-float64-base-to-words': 0.0.7 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/number-float64-base-get-high-word@0.0.6: - resolution: {integrity: sha512-jSFSYkgiG/IzDurbwrDKtWiaZeSEJK8iJIsNtbPG1vOIdQMRyw+t0bf3Kf3vuJu/+bnSTvYZLqpCO6wzT/ve9g==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float64': 0.0.6 - '@stdlib/array-uint32': 0.0.6 - '@stdlib/assert-is-little-endian': 0.0.7 - '@stdlib/number-float64-base-to-words': 0.0.7 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/number-float64-base-normalize@0.0.9: - resolution: {integrity: sha512-+rm7RQJEj8zHkqYFE2a6DgNQSB5oKE/IydHAajgZl40YB91BoYRYf/ozs5/tTwfy2Fc04+tIpSfFtzDr4ZY19Q==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/constants-float64-smallest-normal': 0.0.8 - '@stdlib/math-base-assert-is-infinite': 0.0.9 - '@stdlib/math-base-assert-is-nan': 0.0.8 - '@stdlib/math-base-special-abs': 0.0.6 - '@stdlib/types': 0.0.14 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/number-float64-base-to-float32@0.0.7: - resolution: {integrity: sha512-PNUSi6+cqfFiu4vgFljUKMFY2O9PxI6+T+vqtIoh8cflf+PjSGj3v4QIlstK9+6qU40eGR5SHZyLTWdzmNqLTQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float32': 0.0.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/number-float64-base-to-words@0.0.7: - resolution: {integrity: sha512-7wsYuq+2MGp9rAkTnQ985rah7EJI9TfgHrYSSd4UIu4qIjoYmWIKEhIDgu7/69PfGrls18C3PxKg1pD/v7DQTg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/array-float64': 0.0.6 - '@stdlib/array-uint32': 0.0.6 - '@stdlib/assert-is-little-endian': 0.0.7 - '@stdlib/os-byte-order': 0.0.7 - '@stdlib/os-float-word-order': 0.0.7 - '@stdlib/types': 0.0.14 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/os-byte-order@0.0.7: - resolution: {integrity: sha512-rRJWjFM9lOSBiIX4zcay7BZsqYBLoE32Oz/Qfim8cv1cN1viS5D4d3DskRJcffw7zXDnG3oZAOw5yZS0FnlyUg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/assert-is-big-endian': 0.0.7 - '@stdlib/assert-is-little-endian': 0.0.7 - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-read-file': 0.0.8 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/os-float-word-order@0.0.7: - resolution: {integrity: sha512-gXIcIZf+ENKP7E41bKflfXmPi+AIfjXW/oU+m8NbP3DQasqHaZa0z5758qvnbO8L1lRJb/MzLOkIY8Bx/0cWEA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-read-file': 0.0.8 - '@stdlib/os-byte-order': 0.0.7 - '@stdlib/utils-library-manifest': 0.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/process-cwd@0.0.8: - resolution: {integrity: sha512-GHINpJgSlKEo9ODDWTHp0/Zc/9C/qL92h5Mc0QlIFBXAoUjy6xT4FB2U16wCNZMG3eVOzt5+SjmCwvGH0Wbg3Q==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-read-file': 0.0.8 - dev: true - - /@stdlib/process-read-stdin@0.0.7: - resolution: {integrity: sha512-nep9QZ5iDGrRtrZM2+pYAvyCiYG4HfO0/9+19BiLJepjgYq4GKeumPAQo22+1xawYDL7Zu62uWzYszaVZcXuyw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-function': 0.0.8 - '@stdlib/assert-is-string': 0.0.8 - '@stdlib/buffer-ctor': 0.0.7 - '@stdlib/buffer-from-string': 0.0.8 - '@stdlib/streams-node-stdin': 0.0.7 - '@stdlib/utils-next-tick': 0.0.8 - dev: true - - /@stdlib/regexp-eol@0.0.7: - resolution: {integrity: sha512-BTMpRWrmlnf1XCdTxOrb8o6caO2lmu/c80XSyhYCi1DoizVIZnqxOaN5yUJNCr50g28vQ47PpsT3Yo7J3SdlRA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-own-property': 0.0.7 - '@stdlib/assert-is-boolean': 0.0.8 - '@stdlib/assert-is-plain-object': 0.0.7 - '@stdlib/assert-is-string': 0.0.8 - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - dev: true - - /@stdlib/regexp-extended-length-path@0.0.7: - resolution: {integrity: sha512-z6uqzMWq3WPDKbl4MIZJoNA5ZsYLQI9G3j2TIvhU8X2hnhlku8p4mvK9F+QmoVvgPxKliwNnx/DAl7ltutSDKw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - dev: true - - /@stdlib/regexp-function-name@0.0.7: - resolution: {integrity: sha512-MaiyFUUqkAUpUoz/9F6AMBuMQQfA9ssQfK16PugehLQh4ZtOXV1LhdY8e5Md7SuYl9IrvFVg1gSAVDysrv5ZMg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - dev: true - - /@stdlib/regexp-regexp@0.0.8: - resolution: {integrity: sha512-S5PZICPd/XRcn1dncVojxIDzJsHtEleuJHHD7ji3o981uPHR7zI2Iy9a1eV2u7+ABeUswbI1Yuix6fXJfcwV1w==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-define-nonenumerable-read-only-property': 0.0.7 - dev: true - - /@stdlib/streams-node-stdin@0.0.7: - resolution: {integrity: sha512-gg4lgrjuoG3V/L29wNs32uADMCqepIcmoOFHJCTAhVe0GtHDLybUVnLljaPfdvmpPZmTvmusPQtIcscbyWvAyg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: true - - /@stdlib/string-base-format-interpolate@0.0.4: - resolution: {integrity: sha512-8FC8+/ey+P5hf1B50oXpXzRzoAgKI1rikpyKZ98Xmjd5rcbSq3NWYi8TqOF8mUHm9hVZ2CXWoNCtEe2wvMQPMg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: true - - /@stdlib/string-base-format-tokenize@0.0.4: - resolution: {integrity: sha512-+vMIkheqAhDeT/iF5hIQo95IMkt5IzC68eR3CxW1fhc48NMkKFE2UfN73ET8fmLuOanLo/5pO2E90c2G7PExow==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: true - - /@stdlib/string-format@0.0.3: - resolution: {integrity: sha512-1jiElUQXlI/tTkgRuzJi9jUz/EjrO9kzS8VWHD3g7gdc3ZpxlA5G9JrIiPXGw/qmZTi0H1pXl6KmX+xWQEQJAg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/string-base-format-interpolate': 0.0.4 - '@stdlib/string-base-format-tokenize': 0.0.4 - dev: true - - /@stdlib/string-lowercase@0.0.9: - resolution: {integrity: sha512-tXFFjbhIlDak4jbQyV1DhYiSTO8b1ozS2g/LELnsKUjIXECDKxGFyWYcz10KuyAWmFotHnCJdIm8/blm2CfDIA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/assert-is-string': 0.0.8 - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-read-file': 0.0.8 - '@stdlib/process-read-stdin': 0.0.7 - '@stdlib/streams-node-stdin': 0.0.7 - '@stdlib/string-format': 0.0.3 - dev: true - - /@stdlib/string-replace@0.0.11: - resolution: {integrity: sha512-F0MY4f9mRE5MSKpAUfL4HLbJMCbG6iUTtHAWnNeAXIvUX1XYIw/eItkA58R9kNvnr1l5B08bavnjrgTJGIKFFQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/assert-is-function': 0.0.8 - '@stdlib/assert-is-regexp': 0.0.7 - '@stdlib/assert-is-regexp-string': 0.0.9 - '@stdlib/assert-is-string': 0.0.8 - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-read-file': 0.0.8 - '@stdlib/process-read-stdin': 0.0.7 - '@stdlib/regexp-eol': 0.0.7 - '@stdlib/streams-node-stdin': 0.0.7 - '@stdlib/string-format': 0.0.3 - '@stdlib/utils-escape-regexp-string': 0.0.9 - '@stdlib/utils-regexp-from-string': 0.0.9 - dev: true - - /@stdlib/types@0.0.14: - resolution: {integrity: sha512-AP3EI9/il/xkwUazcoY+SbjtxHRrheXgSbWZdEGD+rWpEgj6n2i63hp6hTOpAB5NipE0tJwinQlDGOuQ1lCaCw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: true - - /@stdlib/utils-constructor-name@0.0.8: - resolution: {integrity: sha512-GXpyNZwjN8u3tyYjL2GgGfrsxwvfogUC3gg7L7NRZ1i86B6xmgfnJUYHYOUnSfB+R531ET7NUZlK52GxL7P82Q==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-buffer': 0.0.8 - '@stdlib/regexp-function-name': 0.0.7 - '@stdlib/utils-native-class': 0.0.8 - dev: true - - /@stdlib/utils-convert-path@0.0.8: - resolution: {integrity: sha512-GNd8uIswrcJCctljMbmjtE4P4oOjhoUIfMvdkqfSrRLRY+ZqPB2xM+yI0MQFfUq/0Rnk/xtESlGSVLz9ZDtXfA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/assert-is-string': 0.0.8 - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-read-file': 0.0.8 - '@stdlib/process-read-stdin': 0.0.7 - '@stdlib/regexp-eol': 0.0.7 - '@stdlib/regexp-extended-length-path': 0.0.7 - '@stdlib/streams-node-stdin': 0.0.7 - '@stdlib/string-lowercase': 0.0.9 - '@stdlib/string-replace': 0.0.11 - dev: true - - /@stdlib/utils-define-nonenumerable-read-only-property@0.0.7: - resolution: {integrity: sha512-c7dnHDYuS4Xn3XBRWIQBPcROTtP/4lkcFyq0FrQzjXUjimfMgHF7cuFIIob6qUTnU8SOzY9p0ydRR2QJreWE6g==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/types': 0.0.14 - '@stdlib/utils-define-property': 0.0.9 - dev: true - - /@stdlib/utils-define-property@0.0.9: - resolution: {integrity: sha512-pIzVvHJvVfU/Lt45WwUAcodlvSPDDSD4pIPc9WmIYi4vnEBA9U7yHtiNz2aTvfGmBMTaLYTVVFIXwkFp+QotMA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/types': 0.0.14 - dev: true - - /@stdlib/utils-escape-regexp-string@0.0.9: - resolution: {integrity: sha512-E+9+UDzf2mlMLgb+zYrrPy2FpzbXh189dzBJY6OG+XZqEJAXcjWs7DURO5oGffkG39EG5KXeaQwDXUavcMDCIw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-string': 0.0.8 - '@stdlib/string-format': 0.0.3 - dev: true - - /@stdlib/utils-get-prototype-of@0.0.7: - resolution: {integrity: sha512-fCUk9lrBO2ELrq+/OPJws1/hquI4FtwG0SzVRH6UJmJfwb1zoEFnjcwyDAy+HWNVmo3xeRLsrz6XjHrJwer9pg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-function': 0.0.8 - '@stdlib/utils-native-class': 0.0.8 - dev: true - - /@stdlib/utils-global@0.0.7: - resolution: {integrity: sha512-BBNYBdDUz1X8Lhfw9nnnXczMv9GztzGpQ88J/6hnY7PHJ71av5d41YlijWeM9dhvWjnH9I7HNE3LL7R07yw0kA==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-boolean': 0.0.8 - dev: true - - /@stdlib/utils-library-manifest@0.0.8: - resolution: {integrity: sha512-IOQSp8skSRQn9wOyMRUX9Hi0j/P5v5TvD8DJWTqtE8Lhr8kVVluMBjHfvheoeKHxfWAbNHSVpkpFY/Bdh/SHgQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - hasBin: true - dependencies: - '@stdlib/cli-ctor': 0.0.3 - '@stdlib/fs-resolve-parent-path': 0.0.8 - '@stdlib/utils-convert-path': 0.0.8 - debug: 2.6.9 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - dev: true - - /@stdlib/utils-native-class@0.0.8: - resolution: {integrity: sha512-0Zl9me2V9rSrBw/N8o8/9XjmPUy8zEeoMM0sJmH3N6C9StDsYTjXIAMPGzYhMEWaWHvGeYyNteFK2yDOVGtC3w==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-has-own-property': 0.0.7 - '@stdlib/assert-has-tostringtag-support': 0.0.9 - dev: true - - /@stdlib/utils-next-tick@0.0.8: - resolution: {integrity: sha512-l+hPl7+CgLPxk/gcWOXRxX/lNyfqcFCqhzzV/ZMvFCYLY/wI9lcWO4xTQNMALY2rp+kiV+qiAiO9zcO+hewwUg==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: true - - /@stdlib/utils-noop@0.0.14: - resolution: {integrity: sha512-A5faFEUfszMgd93RCyB+aWb62hQxgP+dZ/l9rIOwNWbIrCYNwSuL4z50lNJuatnwwU4BQ4EjQr+AmBsnvuLcyQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dev: true - - /@stdlib/utils-regexp-from-string@0.0.9: - resolution: {integrity: sha512-3rN0Mcyiarl7V6dXRjFAUMacRwe0/sYX7ThKYurf0mZkMW9tjTP+ygak9xmL9AL0QQZtbrFFwWBrDO+38Vnavw==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/assert-is-string': 0.0.8 - '@stdlib/regexp-regexp': 0.0.8 - '@stdlib/string-format': 0.0.3 - dev: true - - /@stdlib/utils-type-of@0.0.8: - resolution: {integrity: sha512-b4xqdy3AnnB7NdmBBpoiI67X4vIRxvirjg3a8BfhM5jPr2k0njby1jAbG9dUxJvgAV6o32S4kjUgfIdjEYpTNQ==} - engines: {node: '>=0.10.0', npm: '>2.7.0'} - os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] - dependencies: - '@stdlib/utils-constructor-name': 0.0.8 - '@stdlib/utils-global': 0.0.7 - dev: true - /@testing-library/dom@9.3.0: resolution: {integrity: sha512-Dffe68pGwI6WlLRYR2I0piIkyole9cSBH5jGQKCGMRpHW5RHCqAUaqc2Kv0tUyd4dU4DLPKhJIjyKOnjv4tuUw==} engines: {node: '>=14'} @@ -5802,10 +4684,6 @@ packages: path-type: 4.0.0 dev: true - /dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dev: true - /doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -5836,11 +4714,6 @@ packages: webidl-conversions: 5.0.0 dev: true - /dset@3.1.3: - resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} - engines: {node: '>=4'} - dev: true - /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: true @@ -8412,11 +7285,6 @@ packages: resolution: {integrity: sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==} dev: true - /js-cookie@3.0.1: - resolution: {integrity: sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==} - engines: {node: '>=12'} - dev: true - /js-levenshtein@1.1.6: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} engines: {node: '>=0.10.0'} @@ -9202,12 +8070,6 @@ packages: engines: {node: '>= 0.6'} dev: true - /new-date@1.0.3: - resolution: {integrity: sha512-0fsVvQPbo2I18DT2zVHpezmeeNYV2JaJSrseiHLc17GNOxJzUdx5mvSigPu8LtIfZSij5i1wXnXFspEs2CD6hA==} - dependencies: - '@segment/isodate': 1.0.3 - dev: true - /newtype-ts@0.3.5(fp-ts@2.16.2)(monocle-ts@2.3.13): resolution: {integrity: sha512-v83UEQMlVR75yf1OUdoSFssjitxzjZlqBAjiGQ4WJaML8Jdc68LJ+BaSAXUmKY4bNzp7hygkKLYTsDi14PxI2g==} peerDependencies: @@ -9286,10 +8148,6 @@ packages: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} dev: true - /obj-case@0.2.1: - resolution: {integrity: sha512-PquYBBTy+Y6Ob/O2574XHhDtHJlV1cJHMCgW+rDRc9J5hhmRelJB3k5dTK/3cVmFVtzvAKuENeuLpoyTzMzkOg==} - dev: true - /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -10686,10 +9544,6 @@ packages: engines: {node: '>= 8'} dev: true - /spark-md5@3.0.2: - resolution: {integrity: sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw==} - dev: true - /split-string@3.1.0: resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} engines: {node: '>=0.10.0'} @@ -11225,10 +10079,6 @@ packages: resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} dev: true - /tiny-hashes@1.0.1: - resolution: {integrity: sha512-knIN5zj4fl7kW4EBU5sLP20DWUvi/rVouvJezV0UAym2DkQaqm365Nyc8F3QEiOvunNDMxR8UhcXd1d5g+Wg1g==} - dev: true - /tinycolor2@1.4.2: resolution: {integrity: sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==} dev: true @@ -11476,14 +10326,6 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /unfetch@3.1.2: - resolution: {integrity: sha512-L0qrK7ZeAudGiKYw6nzFjnJ2D5WHblUBwmHIqtPS6oKUd+Hcpk7/hKsSmcHsTlpd1TbTNsiRBUKRq3bHLNIqIw==} - dev: true - - /unfetch@4.2.0: - resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} - dev: true - /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} diff --git a/src/__tests__/segment.test.ts b/src/__tests__/segment.test.ts index 04a9b9b24..88e568132 100644 --- a/src/__tests__/segment.test.ts +++ b/src/__tests__/segment.test.ts @@ -9,20 +9,16 @@ import { beforeEach, describe, expect, it, jest } from '@jest/globals' -import posthog from '../loader-module' import { PostHog } from '../posthog-core' -import { uuidv7 } from '../uuidv7' -describe(`Module-based loader in Node env`, () => { +describe(`Segment integration`, () => { let segment: any let segmentIntegration: any let posthogName: string - beforeEach(() => { - jest.spyOn(posthog, '_send_request').mockReturnValue() - jest.spyOn(console, 'log').mockReturnValue() - posthogName = uuidv7() + jest.setTimeout(500) + beforeEach(() => { // Create something that looks like the Segment Analytics 2.0 API. We // could use the actual client, but it's a little more tricky and we'd // want to mock out the network requests, for which we don't have a good @@ -39,6 +35,7 @@ describe(`Module-based loader in Node env`, () => { // To ensure the Promise isn't resolved instantly, we use a // setTimeout with a delay of 0 to ensure it happens as a // microtask in the future. + return new Promise((resolve) => { setTimeout(() => { segmentIntegration = integration @@ -49,36 +46,66 @@ describe(`Module-based loader in Node env`, () => { } }) - it('should call loaded after the segment integration has been set up', (done) => { - // This test is to ensure that, by the time the `loaded` callback is - // called, the PostHog Segment integration have completed registration. - // If this is not the case, then we end up in odd situations where we - // try to send segment events but we do not get the enriched event - // information as the integration provides. - const posthog = new PostHog() - jest.spyOn(posthog, 'capture') + it('should call loaded after the segment integration has been set up', async () => { + const loadPromise = new Promise((resolve) => { + return new PostHog().init( + `test-token`, + { + debug: true, + persistence: `localStorage`, + api_host: `https://test.com`, + segment: segment, + loaded: resolve, + }, + posthogName + ) + }) + expect(segmentIntegration).toBeUndefined() + await loadPromise + expect(segmentIntegration).toBeDefined() + }) - posthog.init( - `test-token`, - { - debug: true, - persistence: `localStorage`, - api_host: `https://test.com`, - segment: segment, - loaded: () => { - expect(segmentIntegration).toBeDefined() - done() + it('should set properties from the segment user', async () => { + const posthog = await new Promise((resolve) => { + return new PostHog().init( + `test-token`, + { + debug: true, + persistence: `localStorage`, + api_host: `https://test.com`, + segment: segment, + loaded: resolve, }, - }, - posthogName - ) + posthogName + ) + }) - // Assuming we've set up our mocks correctly, the segmentIntegration - // shouldn't have been set by now, but just to be sure we're actually - // checking that loaded callback handles async code, we explicitly check - // this first. - expect(segmentIntegration).toBeUndefined() + expect(posthog.get_distinct_id()).toBe('test-id') + expect(posthog.get_property('$device_id')).toBe('test-anonymous-id') }) - // TODO: add tests for distinct id setting and event enrichment. + it('should handle the segment user being a promise', async () => { + segment.user = () => + Promise.resolve({ + anonymousId: () => 'test-anonymous-id', + id: () => 'test-id', + }) + + const posthog = await new Promise((resolve) => { + return new PostHog().init( + `test-token`, + { + debug: true, + persistence: `localStorage`, + api_host: `https://test.com`, + segment: segment, + loaded: resolve, + }, + posthogName + ) + }) + + expect(posthog.get_distinct_id()).toBe('test-id') + expect(posthog.get_property('$device_id')).toBe('test-anonymous-id') + }) }) diff --git a/src/extensions/segment-integration.ts b/src/extensions/segment-integration.ts index dbacfb57f..070222db2 100644 --- a/src/extensions/segment-integration.ts +++ b/src/extensions/segment-integration.ts @@ -20,8 +20,20 @@ import { PostHog } from '../posthog-core' import { logger } from '../utils/logger' import type { Plugin as SegmentPlugin, Context as SegmentContext } from '@segment/analytics-next' +import { uuidv7 } from '../uuidv7' +import { _isFunction } from '../utils/type-utils' -export const createSegmentIntegration = (posthog: PostHog): SegmentPlugin => { +export type SegmentUser = { + anonymousId(): string | undefined + id(): string | undefined +} + +export type SegmentAnalytics = { + user: () => SegmentUser | Promise + register: (integration: SegmentPlugin) => Promise +} + +const createSegmentIntegration = (posthog: PostHog): SegmentPlugin => { if (!Promise || !Promise.resolve) { logger.warn('This browser does not have Promise support, and can not use the segment integration') } @@ -60,3 +72,49 @@ export const createSegmentIntegration = (posthog: PostHog): SegmentPlugin => { screen: (ctx) => enrichEvent(ctx, '$screen'), } } + +function setupPostHogFromSegment(posthog: PostHog, done: () => void) { + const segment = posthog.config.segment + if (!segment) { + return done() + } + + const bootstrapUser = (user: SegmentUser) => { + // Use segments anonymousId instead + const getSegmentAnonymousId = () => user.anonymousId() || uuidv7() + posthog.config.get_device_id = getSegmentAnonymousId + + // If a segment user ID exists, set it as the distinct_id + if (user.id()) { + posthog.register({ + distinct_id: user.id(), + $device_id: getSegmentAnonymousId(), + }) + posthog.persistence!.set_user_state('identified') + } + + done() + } + + const segmentUser = segment.user() + + // If segmentUser is a promise then we need to wait for it to resolve + if ('then' in segmentUser && _isFunction(segmentUser.then)) { + segmentUser.then((user) => bootstrapUser(user)) + } else { + bootstrapUser(segmentUser as SegmentUser) + } +} + +export function setupSegmentIntegration(posthog: PostHog, done: () => void) { + const segment = posthog.config.segment + if (!segment) { + return done() + } + + setupPostHogFromSegment(posthog, () => { + segment.register(createSegmentIntegration(posthog)).then(() => { + done() + }) + }) +} diff --git a/src/posthog-core.ts b/src/posthog-core.ts index 0cd3c2603..a57c28bc8 100644 --- a/src/posthog-core.ts +++ b/src/posthog-core.ts @@ -45,7 +45,7 @@ import { ToolbarParams, } from './types' import { SentryIntegration } from './extensions/sentry-integration' -import { createSegmentIntegration } from './extensions/segment-integration' +import { setupSegmentIntegration } from './extensions/segment-integration' import { PageViewManager } from './page-view' import { PostHogSurveys } from './posthog-surveys' import { RateLimiter } from './rate-limiter' @@ -223,7 +223,6 @@ export class PostHog { elementsChainAsString: boolean SentryIntegration: typeof SentryIntegration - segmentIntegration: () => any /** DEPRECATED: We keep this to support existing usage but now one should just call .setPersonProperties */ people: { @@ -235,7 +234,6 @@ export class PostHog { this.config = defaultConfig() this.decideEndpointWasHit = false this.SentryIntegration = SentryIntegration - this.segmentIntegration = () => createSegmentIntegration(this) this.__captureHooks = [] this.__request_queue = [] this.__loaded = false @@ -387,20 +385,6 @@ export class PostHog { this._gdpr_init() - if (config.segment) { - const segmentUser = config.segment.user() - // Use segments anonymousId instead - this.config.get_device_id = () => segmentUser.anonymousId() || uuidv7() - - // If a segment user ID exists, set it as the distinct_id - if (segmentUser.id()) { - this.register({ - distinct_id: segmentUser.id(), - }) - this.persistence.set_user_state('identified') - } - } - // isUndefined doesn't provide typehint here so wouldn't reduce bundle as we'd need to assign // eslint-disable-next-line posthog-js/no-direct-undefined-check if (config.bootstrap?.distinctID !== undefined) { @@ -458,9 +442,7 @@ export class PostHog { // We wan't to avoid promises for IE11 compatibility, so we use callbacks here if (config.segment) { - config.segment.register(this.segmentIntegration()).then(() => { - this._loaded() - }) + setupSegmentIntegration(this, () => this._loaded()) } else { this._loaded() } diff --git a/src/types.ts b/src/types.ts index 824e65568..62b2d22a9 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,6 +1,6 @@ -import type { AnalyticsSnippet } from '@segment/analytics-next' import type { MaskInputOptions, SlimDOMOptions } from 'rrweb-snapshot' import { PostHog } from './posthog-core' +import type { SegmentAnalytics } from './extensions/segment-integration' export type Property = any export type Properties = Record @@ -141,7 +141,7 @@ export interface PostHogConfig { // Should only be used for testing. Could negatively impact performance. disable_compression: boolean bootstrap: BootstrapConfig - segment?: AnalyticsSnippet + segment?: SegmentAnalytics __preview_send_client_session_params?: boolean disable_scroll_properties?: boolean // Let the pageview scroll stats use a custom css selector for the root element, e.g. `main` From 2e9259c8de7abb6dd9ec7aecf304fb2f1948b0be Mon Sep 17 00:00:00 2001 From: Ben White Date: Tue, 16 Apr 2024 10:05:31 +0200 Subject: [PATCH 3/4] Fix up segment logic --- src/extensions/segment-integration.ts | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/extensions/segment-integration.ts b/src/extensions/segment-integration.ts index 070222db2..8d4cb456c 100644 --- a/src/extensions/segment-integration.ts +++ b/src/extensions/segment-integration.ts @@ -19,7 +19,6 @@ import { PostHog } from '../posthog-core' import { logger } from '../utils/logger' -import type { Plugin as SegmentPlugin, Context as SegmentContext } from '@segment/analytics-next' import { uuidv7 } from '../uuidv7' import { _isFunction } from '../utils/type-utils' @@ -33,6 +32,32 @@ export type SegmentAnalytics = { register: (integration: SegmentPlugin) => Promise } +// Loosely based on https://github.com/segmentio/analytics-next/blob/master/packages/core/src/plugins/index.ts +interface SegmentContext { + event: { + event: string + userId?: string + anonymousId?: string + properties: any + } +} + +interface SegmentPlugin { + name: string + version: string + type: 'enrichment' + isLoaded: () => boolean + load: (ctx: SegmentContext, instance: any, config?: any) => Promise + unload?: (ctx: SegmentContext, instance: any) => Promise | unknown + ready?: () => Promise + track?: (ctx: SegmentContext) => Promise | SegmentContext + identify?: (ctx: SegmentContext) => Promise | SegmentContext + page?: (ctx: SegmentContext) => Promise | SegmentContext + group?: (ctx: SegmentContext) => Promise | SegmentContext + alias?: (ctx: SegmentContext) => Promise | SegmentContext + screen?: (ctx: SegmentContext) => Promise | SegmentContext +} + const createSegmentIntegration = (posthog: PostHog): SegmentPlugin => { if (!Promise || !Promise.resolve) { logger.warn('This browser does not have Promise support, and can not use the segment integration') From 6339092306f4baf7d85b222ed4be7d312186613c Mon Sep 17 00:00:00 2001 From: Ben White Date: Tue, 16 Apr 2024 15:18:36 +0200 Subject: [PATCH 4/4] Fix --- src/extensions/segment-integration.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/extensions/segment-integration.ts b/src/extensions/segment-integration.ts index 8d4cb456c..38a6f1014 100644 --- a/src/extensions/segment-integration.ts +++ b/src/extensions/segment-integration.ts @@ -42,6 +42,8 @@ interface SegmentContext { } } +type SegmentFunction = (ctx: SegmentContext) => Promise | SegmentContext + interface SegmentPlugin { name: string version: string @@ -50,12 +52,12 @@ interface SegmentPlugin { load: (ctx: SegmentContext, instance: any, config?: any) => Promise unload?: (ctx: SegmentContext, instance: any) => Promise | unknown ready?: () => Promise - track?: (ctx: SegmentContext) => Promise | SegmentContext - identify?: (ctx: SegmentContext) => Promise | SegmentContext - page?: (ctx: SegmentContext) => Promise | SegmentContext - group?: (ctx: SegmentContext) => Promise | SegmentContext - alias?: (ctx: SegmentContext) => Promise | SegmentContext - screen?: (ctx: SegmentContext) => Promise | SegmentContext + track?: SegmentFunction + identify?: SegmentFunction + page?: SegmentFunction + group?: SegmentFunction + alias?: SegmentFunction + screen?: SegmentFunction } const createSegmentIntegration = (posthog: PostHog): SegmentPlugin => {