@seethruhead/cra-payroll 0.8.1 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -96
- package/README.md.bak +183 -0
- package/dist/cra-payroll.js +49 -49
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,36 +1,15 @@
|
|
|
1
|
-
# cra-payroll
|
|
1
|
+
# @seethruhead/cra-payroll
|
|
2
2
|
|
|
3
3
|
Calculate Canadian payroll deductions using CRA's [Payroll Deductions Online Calculator (PDOC)](https://apps.cra-arc.gc.ca/ebci/rhpd/beta/entry).
|
|
4
4
|
|
|
5
|
-
Automates the CRA wizard via
|
|
6
|
-
|
|
7
|
-
## Download
|
|
8
|
-
|
|
9
|
-
Grab the latest binary for your platform from [**Releases**](https://github.com/SeeThruHead/cra-payroll/releases):
|
|
10
|
-
|
|
11
|
-
| Platform | File |
|
|
12
|
-
|----------|------|
|
|
13
|
-
| macOS (Apple Silicon) | `cra-payroll-darwin-arm64` |
|
|
14
|
-
| macOS (Intel) | `cra-payroll-darwin-x64` |
|
|
15
|
-
| Linux (x64) | `cra-payroll-linux-x64` |
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
# Example: macOS Apple Silicon
|
|
19
|
-
curl -L -o cra-payroll https://github.com/SeeThruHead/cra-payroll/releases/latest/download/cra-payroll-darwin-arm64
|
|
20
|
-
chmod +x cra-payroll
|
|
21
|
-
|
|
22
|
-
# Remove macOS quarantine flag (unsigned binary)
|
|
23
|
-
xattr -d com.apple.quarantine cra-payroll
|
|
24
|
-
|
|
25
|
-
sudo mv cra-payroll /usr/local/bin/
|
|
26
|
-
```
|
|
5
|
+
Automates the CRA wizard via Puppeteer and returns your net pay, taxes, CPP, EI, and RRSP breakdown — per paycheck, monthly, or annually.
|
|
27
6
|
|
|
28
7
|
> **Requires Google Chrome** — uses your system Chrome, no extra browser install needed.
|
|
29
8
|
|
|
30
|
-
|
|
9
|
+
## Install
|
|
31
10
|
|
|
32
11
|
```bash
|
|
33
|
-
|
|
12
|
+
npm install -g @seethruhead/cra-payroll
|
|
34
13
|
```
|
|
35
14
|
|
|
36
15
|
## Usage
|
|
@@ -53,21 +32,12 @@ cra-payroll --salary 100000 --monthly
|
|
|
53
32
|
|
|
54
33
|
# Combine them
|
|
55
34
|
cra-payroll --salary 150000 --table --annual --monthly
|
|
56
|
-
|
|
57
|
-
# Verbose logging
|
|
58
|
-
cra-payroll -v --salary 100000
|
|
59
|
-
|
|
60
|
-
# Check version
|
|
61
|
-
cra-payroll --version
|
|
62
|
-
|
|
63
|
-
# Self-update to latest release
|
|
64
|
-
cra-payroll --update
|
|
65
35
|
```
|
|
66
36
|
|
|
67
37
|
### Example output (`--table`)
|
|
68
38
|
|
|
69
39
|
```
|
|
70
|
-
|
|
40
|
+
Per-Paycheck Table (2026)
|
|
71
41
|
══════════════════════════════════════════════════════════════════════════════════════════════
|
|
72
42
|
# │ Gross │ Fed Tax │ Prov Tax │ CPP │ EI │ Net Pay │ Cum CPP/EI
|
|
73
43
|
──────────────────────────────────────────────────────────────────────────────────────────────
|
|
@@ -81,30 +51,28 @@ cra-payroll --update
|
|
|
81
51
|
|
|
82
52
|
## Config
|
|
83
53
|
|
|
84
|
-
|
|
85
|
-
1. `--config <path>`
|
|
86
|
-
2. `./config.json`
|
|
87
|
-
3. `~/.config/cra-payroll.json`
|
|
88
|
-
4. `~/.cra-payroll.json`
|
|
89
|
-
|
|
90
|
-
CLI args override config file values. Missing values are prompted interactively.
|
|
54
|
+
Create `~/.config/cra-payroll.json`:
|
|
91
55
|
|
|
92
56
|
```json
|
|
93
57
|
{
|
|
94
58
|
"province": "Ontario",
|
|
95
59
|
"annualSalary": 100000,
|
|
96
60
|
"payPeriod": "Semi-monthly (24 pay periods a year)",
|
|
61
|
+
"year": 2026,
|
|
97
62
|
"rrspEmployeePercent": 4,
|
|
98
63
|
"rrspEmployerPercent": 4
|
|
99
64
|
}
|
|
100
65
|
```
|
|
101
66
|
|
|
67
|
+
CLI args override config file values. Missing values are prompted interactively.
|
|
68
|
+
|
|
102
69
|
### Options
|
|
103
70
|
|
|
104
71
|
| Option | CLI flag | Config key | Default |
|
|
105
72
|
|--------|----------|------------|---------|
|
|
106
73
|
| Province | `-p`, `--province` | `province` | `Ontario` |
|
|
107
74
|
| Annual salary | `-s`, `--salary` | `annualSalary` | _(prompted)_ |
|
|
75
|
+
| Tax year | `-y`, `--year` | `year` | current year |
|
|
108
76
|
| Pay period | `--pay-period` | `payPeriod` | `Semi-monthly (24)` |
|
|
109
77
|
| Employee RRSP % | `--rrsp-employee` | `rrspEmployeePercent` | `4` |
|
|
110
78
|
| Employer RRSP % | `--rrsp-employer` | `rrspEmployerPercent` | `4` |
|
|
@@ -114,69 +82,20 @@ CLI args override config file values. Missing values are prompted interactively.
|
|
|
114
82
|
| Annual totals | `-a`, `--annual` | — | `false` |
|
|
115
83
|
| Monthly averages | `-m`, `--monthly` | — | `false` |
|
|
116
84
|
| Verbose | `-v`, `--verbose` | — | `false` |
|
|
117
|
-
| Self-update | `--update` | — | — |
|
|
118
|
-
| Show version | `--version` | — | — |
|
|
119
85
|
| Headless | `--headless` | — | `false` |
|
|
120
86
|
| Config path | `-c`, `--config` | — | — |
|
|
121
87
|
|
|
122
|
-
### 2026 CPP/EI Maximums (used for `--table`)
|
|
123
|
-
|
|
124
|
-
| | Amount |
|
|
125
|
-
|---|---|
|
|
126
|
-
| CPP max contribution | $4,230.45 |
|
|
127
|
-
| CPP2 max (additional) | $416.00 |
|
|
128
|
-
| EI max premium | $1,123.07 |
|
|
129
|
-
|
|
130
|
-
## Run from source
|
|
131
|
-
|
|
132
|
-
If you'd rather not download a binary, you can clone and run directly. You'll need [Google Chrome](https://www.google.com/chrome/) installed.
|
|
133
|
-
|
|
134
|
-
### With Bun
|
|
135
|
-
|
|
136
|
-
```bash
|
|
137
|
-
git clone https://github.com/SeeThruHead/cra-payroll.git
|
|
138
|
-
cd cra-payroll
|
|
139
|
-
bun install
|
|
140
|
-
bun run dev -- --salary 100000
|
|
141
|
-
bun run dev -- --salary 150000 --table
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### With Node
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
git clone https://github.com/SeeThruHead/cra-payroll.git
|
|
148
|
-
cd cra-payroll
|
|
149
|
-
npm install
|
|
150
|
-
npx tsx src/cli.ts --salary 100000
|
|
151
|
-
npx tsx src/cli.ts --salary 150000 --table
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
## Development
|
|
155
|
-
|
|
156
|
-
```bash
|
|
157
|
-
# Run directly
|
|
158
|
-
bun run dev -- --salary 100000
|
|
159
|
-
|
|
160
|
-
# Build standalone binary
|
|
161
|
-
bun run build
|
|
162
|
-
|
|
163
|
-
# Unit tests (fast, no browser)
|
|
164
|
-
bun test
|
|
165
|
-
|
|
166
|
-
# Integration tests (hits CRA, needs Chrome, may be flaky)
|
|
167
|
-
bun run test:integration
|
|
168
|
-
|
|
169
|
-
# All tests
|
|
170
|
-
bun run test:all
|
|
171
|
-
```
|
|
172
|
-
|
|
173
88
|
## How it works
|
|
174
89
|
|
|
175
90
|
1. Launches your system Chrome via Puppeteer (headed by default — CRA blocks headless)
|
|
176
91
|
2. Fills out the PDOC wizard: province, pay period, salary, RRSP contributions
|
|
177
92
|
3. Sets CPP/EI status and hits Calculate
|
|
178
93
|
4. Scrapes the results page for taxes, deductions, and net pay
|
|
179
|
-
5. For `--table` mode: runs twice (with/without CPP/EI) and simulates each paycheck using the
|
|
94
|
+
5. For `--table` mode: runs twice (with/without CPP/EI) and simulates each paycheck using the annual maximums
|
|
95
|
+
|
|
96
|
+
## Standalone binary
|
|
97
|
+
|
|
98
|
+
If you prefer a standalone binary without Node.js, see the [GitHub releases](https://github.com/SeeThruHead/cra-payroll/releases).
|
|
180
99
|
|
|
181
100
|
## License
|
|
182
101
|
|
package/README.md.bak
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# cra-payroll
|
|
2
|
+
|
|
3
|
+
Calculate Canadian payroll deductions using CRA's [Payroll Deductions Online Calculator (PDOC)](https://apps.cra-arc.gc.ca/ebci/rhpd/beta/entry).
|
|
4
|
+
|
|
5
|
+
Automates the CRA wizard via Playwright and returns your net pay, taxes, CPP, EI, and RRSP breakdown — per paycheck, monthly, or annually.
|
|
6
|
+
|
|
7
|
+
## Download
|
|
8
|
+
|
|
9
|
+
Grab the latest binary for your platform from [**Releases**](https://github.com/SeeThruHead/cra-payroll/releases):
|
|
10
|
+
|
|
11
|
+
| Platform | File |
|
|
12
|
+
|----------|------|
|
|
13
|
+
| macOS (Apple Silicon) | `cra-payroll-darwin-arm64` |
|
|
14
|
+
| macOS (Intel) | `cra-payroll-darwin-x64` |
|
|
15
|
+
| Linux (x64) | `cra-payroll-linux-x64` |
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Example: macOS Apple Silicon
|
|
19
|
+
curl -L -o cra-payroll https://github.com/SeeThruHead/cra-payroll/releases/latest/download/cra-payroll-darwin-arm64
|
|
20
|
+
chmod +x cra-payroll
|
|
21
|
+
|
|
22
|
+
# Remove macOS quarantine flag (unsigned binary)
|
|
23
|
+
xattr -d com.apple.quarantine cra-payroll
|
|
24
|
+
|
|
25
|
+
sudo mv cra-payroll /usr/local/bin/
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
> **Requires Google Chrome** — uses your system Chrome, no extra browser install needed.
|
|
29
|
+
|
|
30
|
+
Or use the one-liner:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
curl -fsSL https://raw.githubusercontent.com/SeeThruHead/cra-payroll/main/install.sh | bash
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Usage
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Interactive — prompts for missing values
|
|
40
|
+
cra-payroll
|
|
41
|
+
|
|
42
|
+
# CLI args
|
|
43
|
+
cra-payroll --salary 120000 --province "British Columbia"
|
|
44
|
+
|
|
45
|
+
# Per-paycheck table for the year (tracks CPP/EI maxout)
|
|
46
|
+
cra-payroll --salary 150000 --table
|
|
47
|
+
|
|
48
|
+
# Annual totals
|
|
49
|
+
cra-payroll --salary 100000 --annual
|
|
50
|
+
|
|
51
|
+
# Monthly averages
|
|
52
|
+
cra-payroll --salary 100000 --monthly
|
|
53
|
+
|
|
54
|
+
# Combine them
|
|
55
|
+
cra-payroll --salary 150000 --table --annual --monthly
|
|
56
|
+
|
|
57
|
+
# Verbose logging
|
|
58
|
+
cra-payroll -v --salary 100000
|
|
59
|
+
|
|
60
|
+
# Check version
|
|
61
|
+
cra-payroll --version
|
|
62
|
+
|
|
63
|
+
# Self-update to latest release
|
|
64
|
+
cra-payroll --update
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Example output (`--table`)
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
📊 Per-Paycheck Table (2026)
|
|
71
|
+
══════════════════════════════════════════════════════════════════════════════════════════════
|
|
72
|
+
# │ Gross │ Fed Tax │ Prov Tax │ CPP │ EI │ Net Pay │ Cum CPP/EI
|
|
73
|
+
──────────────────────────────────────────────────────────────────────────────────────────────
|
|
74
|
+
1 │ 6,250.00 │ 1,028.37 │ 612.45 │ 382.51 │ 102.08 │ 4,124.59 │ 484.59
|
|
75
|
+
2 │ 6,250.00 │ 1,028.37 │ 612.45 │ 382.51 │ 102.08 │ 4,124.59 │ 969.18
|
|
76
|
+
... │ ... │ ... │ ... │ ... │ ... │ ... │ ...
|
|
77
|
+
11 │ 6,250.00 │ 1,028.37 │ 612.45 │ 112.50 │ 19.37 │ 4,477.31 │ 5,353.52 ← partial
|
|
78
|
+
12 │ 6,250.00 │ 1,028.37 │ 612.45 │ 0.00 │ 0.00 │ 4,609.18 │ 5,353.52 ✓ maxed
|
|
79
|
+
... │ ... │ ... │ ... │ ... │ ... │ ... │ ...
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Config
|
|
83
|
+
|
|
84
|
+
Config is loaded from the first file found:
|
|
85
|
+
1. `--config <path>`
|
|
86
|
+
2. `./config.json`
|
|
87
|
+
3. `~/.config/cra-payroll.json`
|
|
88
|
+
4. `~/.cra-payroll.json`
|
|
89
|
+
|
|
90
|
+
CLI args override config file values. Missing values are prompted interactively.
|
|
91
|
+
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"province": "Ontario",
|
|
95
|
+
"annualSalary": 100000,
|
|
96
|
+
"payPeriod": "Semi-monthly (24 pay periods a year)",
|
|
97
|
+
"rrspEmployeePercent": 4,
|
|
98
|
+
"rrspEmployerPercent": 4
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Options
|
|
103
|
+
|
|
104
|
+
| Option | CLI flag | Config key | Default |
|
|
105
|
+
|--------|----------|------------|---------|
|
|
106
|
+
| Province | `-p`, `--province` | `province` | `Ontario` |
|
|
107
|
+
| Annual salary | `-s`, `--salary` | `annualSalary` | _(prompted)_ |
|
|
108
|
+
| Pay period | `--pay-period` | `payPeriod` | `Semi-monthly (24)` |
|
|
109
|
+
| Employee RRSP % | `--rrsp-employee` | `rrspEmployeePercent` | `4` |
|
|
110
|
+
| Employer RRSP % | `--rrsp-employer` | `rrspEmployerPercent` | `4` |
|
|
111
|
+
| CPP maxed | `--cpp-maxed` | `cppMaxedOut` | `false` |
|
|
112
|
+
| EI maxed | `--ei-maxed` | `eiMaxedOut` | `false` |
|
|
113
|
+
| Yearly table | `-t`, `--table` | — | `false` |
|
|
114
|
+
| Annual totals | `-a`, `--annual` | — | `false` |
|
|
115
|
+
| Monthly averages | `-m`, `--monthly` | — | `false` |
|
|
116
|
+
| Verbose | `-v`, `--verbose` | — | `false` |
|
|
117
|
+
| Self-update | `--update` | — | — |
|
|
118
|
+
| Show version | `--version` | — | — |
|
|
119
|
+
| Headless | `--headless` | — | `false` |
|
|
120
|
+
| Config path | `-c`, `--config` | — | — |
|
|
121
|
+
|
|
122
|
+
### 2026 CPP/EI Maximums (used for `--table`)
|
|
123
|
+
|
|
124
|
+
| | Amount |
|
|
125
|
+
|---|---|
|
|
126
|
+
| CPP max contribution | $4,230.45 |
|
|
127
|
+
| CPP2 max (additional) | $416.00 |
|
|
128
|
+
| EI max premium | $1,123.07 |
|
|
129
|
+
|
|
130
|
+
## Run from source
|
|
131
|
+
|
|
132
|
+
If you'd rather not download a binary, you can clone and run directly. You'll need [Google Chrome](https://www.google.com/chrome/) installed.
|
|
133
|
+
|
|
134
|
+
### With Bun
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
git clone https://github.com/SeeThruHead/cra-payroll.git
|
|
138
|
+
cd cra-payroll
|
|
139
|
+
bun install
|
|
140
|
+
bun run dev -- --salary 100000
|
|
141
|
+
bun run dev -- --salary 150000 --table
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### With Node
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
git clone https://github.com/SeeThruHead/cra-payroll.git
|
|
148
|
+
cd cra-payroll
|
|
149
|
+
npm install
|
|
150
|
+
npx tsx src/cli.ts --salary 100000
|
|
151
|
+
npx tsx src/cli.ts --salary 150000 --table
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Development
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Run directly
|
|
158
|
+
bun run dev -- --salary 100000
|
|
159
|
+
|
|
160
|
+
# Build standalone binary
|
|
161
|
+
bun run build
|
|
162
|
+
|
|
163
|
+
# Unit tests (fast, no browser)
|
|
164
|
+
bun test
|
|
165
|
+
|
|
166
|
+
# Integration tests (hits CRA, needs Chrome, may be flaky)
|
|
167
|
+
bun run test:integration
|
|
168
|
+
|
|
169
|
+
# All tests
|
|
170
|
+
bun run test:all
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## How it works
|
|
174
|
+
|
|
175
|
+
1. Launches your system Chrome via Puppeteer (headed by default — CRA blocks headless)
|
|
176
|
+
2. Fills out the PDOC wizard: province, pay period, salary, RRSP contributions
|
|
177
|
+
3. Sets CPP/EI status and hits Calculate
|
|
178
|
+
4. Scrapes the results page for taxes, deductions, and net pay
|
|
179
|
+
5. For `--table` mode: runs twice (with/without CPP/EI) and simulates each paycheck using the 2026 maximums
|
|
180
|
+
|
|
181
|
+
## License
|
|
182
|
+
|
|
183
|
+
MIT
|
package/dist/cra-payroll.js
CHANGED
|
@@ -39589,7 +39589,7 @@ var require_estraverse = __commonJS((exports) => {
|
|
|
39589
39589
|
this.parent = parent;
|
|
39590
39590
|
this.key = key;
|
|
39591
39591
|
}
|
|
39592
|
-
Reference.prototype.replace = function
|
|
39592
|
+
Reference.prototype.replace = function replace2(node) {
|
|
39593
39593
|
this.parent[this.key] = node;
|
|
39594
39594
|
};
|
|
39595
39595
|
Reference.prototype.remove = function remove() {
|
|
@@ -39610,13 +39610,13 @@ var require_estraverse = __commonJS((exports) => {
|
|
|
39610
39610
|
function Controller() {}
|
|
39611
39611
|
Controller.prototype.path = function path() {
|
|
39612
39612
|
var i, iz, j, jz, result, element;
|
|
39613
|
-
function addToPath(result2,
|
|
39614
|
-
if (Array.isArray(
|
|
39615
|
-
for (j = 0, jz =
|
|
39616
|
-
result2.push(
|
|
39613
|
+
function addToPath(result2, path2) {
|
|
39614
|
+
if (Array.isArray(path2)) {
|
|
39615
|
+
for (j = 0, jz = path2.length;j < jz; ++j) {
|
|
39616
|
+
result2.push(path2[j]);
|
|
39617
39617
|
}
|
|
39618
39618
|
} else {
|
|
39619
|
-
result2.push(
|
|
39619
|
+
result2.push(path2);
|
|
39620
39620
|
}
|
|
39621
39621
|
}
|
|
39622
39622
|
if (!this.__current.path) {
|
|
@@ -39704,7 +39704,7 @@ var require_estraverse = __commonJS((exports) => {
|
|
|
39704
39704
|
}
|
|
39705
39705
|
return false;
|
|
39706
39706
|
}
|
|
39707
|
-
Controller.prototype.traverse = function
|
|
39707
|
+
Controller.prototype.traverse = function traverse2(root, visitor) {
|
|
39708
39708
|
var worklist, leavelist, element, node, nodeType, ret, key, current, current2, candidates, candidate, sentinel;
|
|
39709
39709
|
this.__initialize(root, visitor);
|
|
39710
39710
|
sentinel = {};
|
|
@@ -39777,7 +39777,7 @@ var require_estraverse = __commonJS((exports) => {
|
|
|
39777
39777
|
}
|
|
39778
39778
|
}
|
|
39779
39779
|
};
|
|
39780
|
-
Controller.prototype.replace = function
|
|
39780
|
+
Controller.prototype.replace = function replace2(root, visitor) {
|
|
39781
39781
|
var worklist, leavelist, node, nodeType, target, element, current, current2, candidates, candidate, sentinel, outer, key;
|
|
39782
39782
|
function removeElem(element2) {
|
|
39783
39783
|
var i, key2, nextElem, parent;
|
|
@@ -51531,12 +51531,12 @@ var require_path = __commonJS((exports, module) => {
|
|
|
51531
51531
|
var types = fork.use(types_1.default);
|
|
51532
51532
|
var isArray4 = types.builtInTypes.array;
|
|
51533
51533
|
var isNumber2 = types.builtInTypes.number;
|
|
51534
|
-
var Path = function
|
|
51535
|
-
if (!(this instanceof
|
|
51534
|
+
var Path = function Path2(value, parentPath, name) {
|
|
51535
|
+
if (!(this instanceof Path2)) {
|
|
51536
51536
|
throw new Error("Path constructor cannot be invoked without 'new'");
|
|
51537
51537
|
}
|
|
51538
51538
|
if (parentPath) {
|
|
51539
|
-
if (!(parentPath instanceof
|
|
51539
|
+
if (!(parentPath instanceof Path2)) {
|
|
51540
51540
|
throw new Error("");
|
|
51541
51541
|
}
|
|
51542
51542
|
} else {
|
|
@@ -51592,14 +51592,14 @@ var require_path = __commonJS((exports, module) => {
|
|
|
51592
51592
|
}
|
|
51593
51593
|
}
|
|
51594
51594
|
};
|
|
51595
|
-
Pp.map = function
|
|
51595
|
+
Pp.map = function map2(callback, context2) {
|
|
51596
51596
|
var result = [];
|
|
51597
51597
|
this.each(function(childPath) {
|
|
51598
51598
|
result.push(callback.call(this, childPath));
|
|
51599
51599
|
}, context2);
|
|
51600
51600
|
return result;
|
|
51601
51601
|
};
|
|
51602
|
-
Pp.filter = function
|
|
51602
|
+
Pp.filter = function filter2(callback, context2) {
|
|
51603
51603
|
var result = [];
|
|
51604
51604
|
this.each(function(childPath) {
|
|
51605
51605
|
if (callback.call(this, childPath)) {
|
|
@@ -51832,14 +51832,14 @@ var require_scope = __commonJS((exports, module) => {
|
|
|
51832
51832
|
var Expression = namedTypes.Expression;
|
|
51833
51833
|
var isArray4 = types.builtInTypes.array;
|
|
51834
51834
|
var b = types.builders;
|
|
51835
|
-
var Scope = function
|
|
51836
|
-
if (!(this instanceof
|
|
51835
|
+
var Scope = function Scope2(path, parentScope) {
|
|
51836
|
+
if (!(this instanceof Scope2)) {
|
|
51837
51837
|
throw new Error("Scope constructor cannot be invoked without 'new'");
|
|
51838
51838
|
}
|
|
51839
51839
|
ScopeType.assert(path.value);
|
|
51840
51840
|
var depth;
|
|
51841
51841
|
if (parentScope) {
|
|
51842
|
-
if (!(parentScope instanceof
|
|
51842
|
+
if (!(parentScope instanceof Scope2)) {
|
|
51843
51843
|
throw new Error("");
|
|
51844
51844
|
}
|
|
51845
51845
|
depth = parentScope.depth + 1;
|
|
@@ -52077,8 +52077,8 @@ var require_node_path = __commonJS((exports, module) => {
|
|
|
52077
52077
|
var isArray4 = types.builtInTypes.array;
|
|
52078
52078
|
var Path = fork.use(path_1.default);
|
|
52079
52079
|
var Scope = fork.use(scope_1.default);
|
|
52080
|
-
var NodePath = function
|
|
52081
|
-
if (!(this instanceof
|
|
52080
|
+
var NodePath = function NodePath2(value, parentPath, name) {
|
|
52081
|
+
if (!(this instanceof NodePath2)) {
|
|
52082
52082
|
throw new Error("NodePath constructor cannot be invoked without 'new'");
|
|
52083
52083
|
}
|
|
52084
52084
|
Path.call(this, value, parentPath, name);
|
|
@@ -52428,8 +52428,8 @@ var require_path_visitor = __commonJS((exports, module) => {
|
|
|
52428
52428
|
var isObject = types.builtInTypes.object;
|
|
52429
52429
|
var isFunction2 = types.builtInTypes.function;
|
|
52430
52430
|
var undefined2;
|
|
52431
|
-
var PathVisitor = function
|
|
52432
|
-
if (!(this instanceof
|
|
52431
|
+
var PathVisitor = function PathVisitor2() {
|
|
52432
|
+
if (!(this instanceof PathVisitor2)) {
|
|
52433
52433
|
throw new Error("PathVisitor constructor cannot be invoked without 'new'");
|
|
52434
52434
|
}
|
|
52435
52435
|
this._reusableContextStack = [];
|
|
@@ -52466,8 +52466,8 @@ var require_path_visitor = __commonJS((exports, module) => {
|
|
|
52466
52466
|
if (!isObject.check(methods)) {
|
|
52467
52467
|
return new PathVisitor;
|
|
52468
52468
|
}
|
|
52469
|
-
var Visitor = function
|
|
52470
|
-
if (!(this instanceof
|
|
52469
|
+
var Visitor = function Visitor2() {
|
|
52470
|
+
if (!(this instanceof Visitor2)) {
|
|
52471
52471
|
throw new Error("Visitor constructor cannot be invoked without 'new'");
|
|
52472
52472
|
}
|
|
52473
52473
|
PathVisitor.call(this);
|
|
@@ -55975,7 +55975,7 @@ var require_ffi_WASM_RELEASE_SYNC = __commonJS((exports) => {
|
|
|
55975
55975
|
|
|
55976
55976
|
// node_modules/@tootallnate/quickjs-emscripten/dist/generated/emscripten-module.WASM_RELEASE_SYNC.js
|
|
55977
55977
|
var require_emscripten_module_WASM_RELEASE_SYNC = __commonJS((exports, module) => {
|
|
55978
|
-
var __dirname = "/
|
|
55978
|
+
var __dirname = "/repo/node_modules/@tootallnate/quickjs-emscripten/dist/generated", __filename = "/repo/node_modules/@tootallnate/quickjs-emscripten/dist/generated/emscripten-module.WASM_RELEASE_SYNC.js";
|
|
55979
55979
|
var QuickJSRaw = (() => {
|
|
55980
55980
|
var _scriptDir = typeof document !== "undefined" && document.currentScript ? document.currentScript.src : undefined;
|
|
55981
55981
|
if (typeof __filename !== "undefined")
|
|
@@ -63233,7 +63233,7 @@ var require_tar_fs = __commonJS((exports) => {
|
|
|
63233
63233
|
const statNext = statAll(xfs, opts.dereference ? xfs.stat : xfs.lstat, cwd, ignore, opts.entries, opts.sort);
|
|
63234
63234
|
const strict = opts.strict !== false;
|
|
63235
63235
|
const umask = typeof opts.umask === "number" ? ~opts.umask : ~processUmask();
|
|
63236
|
-
const
|
|
63236
|
+
const pack2 = opts.pack || tar.pack();
|
|
63237
63237
|
const finish = opts.finish || noop2;
|
|
63238
63238
|
let map2 = opts.map || noop2;
|
|
63239
63239
|
let dmode = typeof opts.dmode === "number" ? opts.dmode : 0;
|
|
@@ -63252,20 +63252,20 @@ var require_tar_fs = __commonJS((exports) => {
|
|
|
63252
63252
|
function onsymlink(filename, header) {
|
|
63253
63253
|
xfs.readlink(path7.join(cwd, filename), function(err2, linkname) {
|
|
63254
63254
|
if (err2)
|
|
63255
|
-
return
|
|
63255
|
+
return pack2.destroy(err2);
|
|
63256
63256
|
header.linkname = normalize(linkname);
|
|
63257
|
-
|
|
63257
|
+
pack2.entry(header, onnextentry);
|
|
63258
63258
|
});
|
|
63259
63259
|
}
|
|
63260
63260
|
function onstat(err2, filename, stat) {
|
|
63261
|
-
if (
|
|
63261
|
+
if (pack2.destroyed)
|
|
63262
63262
|
return;
|
|
63263
63263
|
if (err2)
|
|
63264
|
-
return
|
|
63264
|
+
return pack2.destroy(err2);
|
|
63265
63265
|
if (!filename) {
|
|
63266
63266
|
if (opts.finalize !== false)
|
|
63267
|
-
|
|
63268
|
-
return finish(
|
|
63267
|
+
pack2.finalize();
|
|
63268
|
+
return finish(pack2);
|
|
63269
63269
|
}
|
|
63270
63270
|
if (stat.isSocket())
|
|
63271
63271
|
return onnextentry();
|
|
@@ -63282,7 +63282,7 @@ var require_tar_fs = __commonJS((exports) => {
|
|
|
63282
63282
|
header.size = 0;
|
|
63283
63283
|
header.type = "directory";
|
|
63284
63284
|
header = map2(header) || header;
|
|
63285
|
-
return
|
|
63285
|
+
return pack2.entry(header, onnextentry);
|
|
63286
63286
|
}
|
|
63287
63287
|
if (stat.isSymbolicLink()) {
|
|
63288
63288
|
header.size = 0;
|
|
@@ -63293,10 +63293,10 @@ var require_tar_fs = __commonJS((exports) => {
|
|
|
63293
63293
|
header = map2(header) || header;
|
|
63294
63294
|
if (!stat.isFile()) {
|
|
63295
63295
|
if (strict)
|
|
63296
|
-
return
|
|
63296
|
+
return pack2.destroy(new Error("unsupported type for " + filename));
|
|
63297
63297
|
return onnextentry();
|
|
63298
63298
|
}
|
|
63299
|
-
const entry =
|
|
63299
|
+
const entry = pack2.entry(header, onnextentry);
|
|
63300
63300
|
const rs = mapStream(xfs.createReadStream(path7.join(cwd, filename), { start: 0, end: header.size > 0 ? header.size - 1 : header.size }), header);
|
|
63301
63301
|
rs.on("error", function(err3) {
|
|
63302
63302
|
entry.destroy(err3);
|
|
@@ -63305,10 +63305,10 @@ var require_tar_fs = __commonJS((exports) => {
|
|
|
63305
63305
|
}
|
|
63306
63306
|
function onnextentry(err2) {
|
|
63307
63307
|
if (err2)
|
|
63308
|
-
return
|
|
63308
|
+
return pack2.destroy(err2);
|
|
63309
63309
|
statNext(onstat);
|
|
63310
63310
|
}
|
|
63311
|
-
return
|
|
63311
|
+
return pack2;
|
|
63312
63312
|
};
|
|
63313
63313
|
function head(list) {
|
|
63314
63314
|
return list.length ? list[list.length - 1] : null;
|
|
@@ -63329,7 +63329,7 @@ var require_tar_fs = __commonJS((exports) => {
|
|
|
63329
63329
|
const ignore = opts.ignore || opts.filter || noop2;
|
|
63330
63330
|
const mapStream = opts.mapStream || echo;
|
|
63331
63331
|
const own = opts.chown !== false && !win32 && processGetuid() === 0;
|
|
63332
|
-
const
|
|
63332
|
+
const extract2 = opts.extract || tar.extract();
|
|
63333
63333
|
const stack = [];
|
|
63334
63334
|
const now = new Date;
|
|
63335
63335
|
const umask = typeof opts.umask === "number" ? ~opts.umask : ~processUmask();
|
|
@@ -63348,10 +63348,10 @@ var require_tar_fs = __commonJS((exports) => {
|
|
|
63348
63348
|
dmode |= parseInt(333, 8);
|
|
63349
63349
|
fmode |= parseInt(222, 8);
|
|
63350
63350
|
}
|
|
63351
|
-
|
|
63351
|
+
extract2.on("entry", onentry);
|
|
63352
63352
|
if (opts.finish)
|
|
63353
|
-
|
|
63354
|
-
return
|
|
63353
|
+
extract2.on("finish", opts.finish);
|
|
63354
|
+
return extract2;
|
|
63355
63355
|
function onentry(header, stream, next) {
|
|
63356
63356
|
header = map2(header) || header;
|
|
63357
63357
|
header.name = normalize(header.name);
|
|
@@ -66245,14 +66245,14 @@ function usage(yargs, shim2) {
|
|
|
66245
66245
|
const logger = yargs.getInternalMethods().getLoggerInstance();
|
|
66246
66246
|
if (fails.length) {
|
|
66247
66247
|
for (let i = fails.length - 1;i >= 0; --i) {
|
|
66248
|
-
const
|
|
66249
|
-
if (isBoolean(
|
|
66248
|
+
const fail2 = fails[i];
|
|
66249
|
+
if (isBoolean(fail2)) {
|
|
66250
66250
|
if (err2)
|
|
66251
66251
|
throw err2;
|
|
66252
66252
|
else if (msg)
|
|
66253
66253
|
throw Error(msg);
|
|
66254
66254
|
} else {
|
|
66255
|
-
|
|
66255
|
+
fail2(msg, err2, self2);
|
|
66256
66256
|
}
|
|
66257
66257
|
}
|
|
66258
66258
|
} else {
|
|
@@ -66309,7 +66309,7 @@ function usage(yargs, shim2) {
|
|
|
66309
66309
|
examples.push([cmd, description || ""]);
|
|
66310
66310
|
};
|
|
66311
66311
|
let commands = [];
|
|
66312
|
-
self2.command = function
|
|
66312
|
+
self2.command = function command2(cmd, description, isDefault, aliases, deprecated = false) {
|
|
66313
66313
|
if (isDefault) {
|
|
66314
66314
|
commands = commands.map((cmdArray) => {
|
|
66315
66315
|
cmdArray[2] = false;
|
|
@@ -79067,7 +79067,7 @@ var formMethods = (page) => ({
|
|
|
79067
79067
|
btn.click();
|
|
79068
79068
|
return true;
|
|
79069
79069
|
}, { timeout: ACTION_TIMEOUT }, textMatch).then(() => {}), `click "${textMatch}"`),
|
|
79070
|
-
selectByLabel: async (labelMatch, optionText) => safe(page.
|
|
79070
|
+
selectByLabel: async (labelMatch, optionText) => safe(page.waitForFunction((match, text) => {
|
|
79071
79071
|
const fireChangeEvents = (el) => {
|
|
79072
79072
|
el.dispatchEvent(new Event("change", { bubbles: true }));
|
|
79073
79073
|
el.dispatchEvent(new Event("input", { bubbles: true }));
|
|
@@ -79079,14 +79079,14 @@ var formMethods = (page) => ({
|
|
|
79079
79079
|
if (label.includes(match) || title.includes(match)) {
|
|
79080
79080
|
const opt = Array.from(s.options).find((o) => o.text.includes(text));
|
|
79081
79081
|
if (!opt)
|
|
79082
|
-
|
|
79082
|
+
return false;
|
|
79083
79083
|
s.value = opt.value;
|
|
79084
79084
|
fireChangeEvents(s);
|
|
79085
|
-
return;
|
|
79085
|
+
return true;
|
|
79086
79086
|
}
|
|
79087
79087
|
}
|
|
79088
|
-
|
|
79089
|
-
}, labelMatch, optionText), `select ${labelMatch}="${optionText}"`),
|
|
79088
|
+
return false;
|
|
79089
|
+
}, { timeout: ACTION_TIMEOUT }, labelMatch, optionText).then(() => {}), `select ${labelMatch}="${optionText}"`),
|
|
79090
79090
|
selectYear: async (year) => safe(page.evaluate((y) => {
|
|
79091
79091
|
const fireChangeEvents = (el) => {
|
|
79092
79092
|
el.dispatchEvent(new Event("change", { bubbles: true }));
|
|
@@ -79638,7 +79638,7 @@ import { existsSync as existsSync4, renameSync, unlinkSync, chmodSync } from "fs
|
|
|
79638
79638
|
// package.json
|
|
79639
79639
|
var package_default = {
|
|
79640
79640
|
name: "@seethruhead/cra-payroll",
|
|
79641
|
-
version: "0.8.
|
|
79641
|
+
version: "0.8.3",
|
|
79642
79642
|
description: "Calculate Canadian payroll deductions using CRA's Payroll Deductions Online Calculator",
|
|
79643
79643
|
type: "module",
|
|
79644
79644
|
bin: {
|