@mcpher/gas-fakes 1.0.20 → 1.0.21
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 +57 -18
- package/gprompts/{gas-inventory.mjs → gas-inventory.js} +25 -13
- package/gprompts/gas-inventory.json +116 -20
- package/gprompts/inventory-list.json +1 -1
- package/gprompts/package-lock.json +234 -0
- package/gprompts/package.json +1 -0
- package/package.json +3 -1
- package/src/index.js +2 -1
- package/src/services/advdocs/app.js +4 -23
- package/src/services/advdrive/app.js +6 -28
- package/src/services/advforms/app.js +6 -25
- package/src/services/advgmail/app.js +6 -26
- package/src/services/advsheets/app.js +6 -26
- package/src/services/advslides/app.js +6 -28
- package/src/services/common/lazyloader.js +22 -0
- package/src/services/documentapp/app.js +8 -42
- package/src/services/documentapp/appenderhelpers.js +2 -2
- package/src/services/documentapp/fakeparagraph.js +1 -1
- package/src/services/driveapp/app.js +6 -28
- package/src/services/formapp/app.js +5 -40
- package/src/services/gmailapp/app.js +7 -40
- package/src/services/logger/app.js +8 -0
- package/src/services/logger/fakelogger.js +162 -0
- package/src/services/scriptapp/app.js +7 -1
- package/src/services/scriptapp/behavior.js +1 -1
- package/src/services/session/app.js +10 -0
- package/src/services/slidesapp/app.js +5 -40
- package/src/services/spreadsheetapp/app.js +6 -50
- package/src/services/spreadsheetapp/fakesheet.js +3 -4
- package/src/services/stores/app.js +0 -1
- package/src/services/urlfetchapp/app.js +0 -1
- package/src/services/utilities/app.js +6 -20
- package/src/support/proxies.js +16 -0
- package/src/support/syncit.js +2 -2
- package/src/services/base/app.js +0 -33
- /package/src/services/{base → session}/fakesession.js +0 -0
package/README.md
CHANGED
|
@@ -37,23 +37,15 @@ In order to avoid a bunch of Node specific code and credentials, yet still handl
|
|
|
37
37
|
|
|
38
38
|
At the very least you need to add the gcp project id and optionally the id of some file you have access to - this'll be used to check that you have set up ADC properly.
|
|
39
39
|
|
|
40
|
-
####
|
|
41
|
-
|
|
42
|
-
In the shells folder run
|
|
43
|
-
```sh
|
|
44
|
-
bash setup.sh
|
|
45
|
-
```
|
|
46
|
-
This will prompt you for project id and a file id to test with. It will also ask it you want to set up all the parameters needed for testing. If you answer yes, this will set up other things from the .env-template you can ignore unless you're planning to run the test suite. More information on that is in [collaborators info](collaborators.md)
|
|
47
|
-
|
|
48
|
-
Running set up will enhance your .env file and auth you in ADC with the required scopes
|
|
49
|
-
|
|
50
|
-
#### Option 2 - manual setup
|
|
40
|
+
#### Your .env file
|
|
51
41
|
|
|
52
42
|
You can setup the .env file your self using the .env.template as a guide.
|
|
53
43
|
|
|
54
44
|
```
|
|
55
45
|
# must set these
|
|
56
46
|
GCP_PROJECT_ID="add your gcp project id here"
|
|
47
|
+
|
|
48
|
+
# optional reference if you want to run a test after setting up
|
|
57
49
|
DRIVE_TEST_FILE_ID="add the id of some test file you have access to here"
|
|
58
50
|
|
|
59
51
|
# we'll use the default config for application default credentials
|
|
@@ -62,12 +54,13 @@ AC=default
|
|
|
62
54
|
# these are the scopes set by default - take some of these out if you want to minimize access
|
|
63
55
|
DEFAULT_SCOPES="https://www.googleapis.com/auth/userinfo.email,openid,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/sqlservice.login"
|
|
64
56
|
EXTRA_SCOPES=",https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/spreadsheets"
|
|
57
|
+
|
|
58
|
+
# optional logging destination
|
|
59
|
+
# can be CONSOLE (default), CLOUD, BOTH, NONE
|
|
60
|
+
LOG_DESTINATION="BOTH"
|
|
65
61
|
|
|
66
62
|
```
|
|
67
63
|
|
|
68
|
-
- goto ./shells and execute sp.sh
|
|
69
|
-
|
|
70
|
-
|
|
71
64
|
#### Manifest file
|
|
72
65
|
|
|
73
66
|
If you have an associated apps script project, you'll probably be using clasp to sync with the apps script IDE, and you'll have an appsscript.json available in your project folder
|
|
@@ -104,6 +97,53 @@ Optionally, gasfakes.json holds various location and behavior parameters to info
|
|
|
104
97
|
| properties | string | /tmp/gas-fakes/properties | gas-fakes uses a local file to emulate apps script's PropertiesService. This is where it should put the files. You may want to put it somewhere other than /tmp to avoid accidental deletion, but don't put it in a place that'll get commited to public git repo |
|
|
105
98
|
| scriptId | string | from clasp, or some random value | If you have a clasp file, it'll pick up the scriptId from there. If not you can enter your scriptId manually, or just leave it to create a fake one. It's use for the moment is to return something useful from ScriptApp.getScriptId() and to partition the cache and properties stores |
|
|
106
99
|
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
### Cloud Logging Integration
|
|
103
|
+
|
|
104
|
+
`gas-fakes` emulates the native Google Apps Script `Logger.log()` integration with Google Cloud Logging, allowing you to send structured logs from your local Node.js environment directly to your Google Cloud project. Note that console.log is the normal Node console and writes to the local console only. All messages from gas-fakes api still go to the console, so the Logger.log is for your own user messages as required.
|
|
105
|
+
|
|
106
|
+
#### Initial Configuration
|
|
107
|
+
|
|
108
|
+
The initial logging behavior is controlled by the `LOG_DESTINATION` environment variable in your `.env` file.
|
|
109
|
+
|
|
110
|
+
| `LOG_DESTINATION` | Behavior |
|
|
111
|
+
|---|---|
|
|
112
|
+
| `CONSOLE` (Default) | Logs structured JSON to the console (`stdout`). This is the default behavior if the variable is not set. |
|
|
113
|
+
| `CLOUD` | Sends logs directly to Google Cloud Logging. Nothing is written to the console. |
|
|
114
|
+
| `BOTH` | Sends logs to both Google Cloud Logging and the console. |
|
|
115
|
+
| `NONE` | Disables all output from `Logger.log()`. |
|
|
116
|
+
|
|
117
|
+
When logging to the cloud, entries are sent to the `gas-fakes/console_logs` log name and include the following labels for easy filtering in the Log Explorer:
|
|
118
|
+
- `gas-fakes-scriptId`
|
|
119
|
+
- `gas-fakes-userId`
|
|
120
|
+
|
|
121
|
+
#### Dynamic Control
|
|
122
|
+
|
|
123
|
+
You can change the logging destination at any time during runtime using the `Logger.__setLogDestination()` method. This is especially useful for testing or for applications that need to change their logging behavior dynamically.
|
|
124
|
+
|
|
125
|
+
The method accepts one of the following string values: `'CONSOLE'`, `'CLOUD'`, `'BOTH'`, or `'NONE'`.
|
|
126
|
+
|
|
127
|
+
#### Example Usage
|
|
128
|
+
|
|
129
|
+
To set the initial destination, modify your `.env` file:
|
|
130
|
+
```
|
|
131
|
+
LOG_DESTINATION="BOTH"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
To change the destination during runtime in your script:
|
|
135
|
+
```javascript
|
|
136
|
+
// Initially logs to BOTH (from .env)
|
|
137
|
+
Logger.log('This goes to console and cloud');
|
|
138
|
+
|
|
139
|
+
// Switch to only logging to the console
|
|
140
|
+
Logger.__setLogDestination('CONSOLE');
|
|
141
|
+
Logger.log('This now only goes to the console');
|
|
142
|
+
|
|
143
|
+
// Disable logging completely
|
|
144
|
+
Logger.__setLogDestination('NONE');
|
|
145
|
+
Logger.log('This goes nowhere');
|
|
146
|
+
```
|
|
107
147
|
### Pushing files to GAS
|
|
108
148
|
|
|
109
149
|
There are a couple of syntactical differences between Node and Apps Script. Not in the body of the code but in how the IDE executes. The 2 main ones are
|
|
@@ -113,16 +153,15 @@ There are a couple of syntactical differences between Node and Apps Script. Not
|
|
|
113
153
|
// this required on Node but not on Apps Script
|
|
114
154
|
if (ScriptApp.isFake) testFakes()
|
|
115
155
|
````
|
|
116
|
-
For inspiration on pushing modified files to the IDE, see the
|
|
117
|
-
|
|
118
|
-
|
|
156
|
+
For inspiration on pushing modified files to the IDE, see the togas.sh bash script I use for the test suite.
|
|
119
157
|
|
|
120
158
|
## Help
|
|
121
159
|
|
|
122
|
-
As I mentioned earlier, to take this further, I'm going to need a lot of help to extend the methods and services supported - so if you feel this would be useful to you, and would like to collaborate, please ping me on
|
|
160
|
+
As I mentioned earlier, to take this further, I'm going to need a lot of help to extend the methods and services supported - so if you feel this would be useful to you, and would like to collaborate, please ping me on bruce@mcpher.com and we'll talk.
|
|
123
161
|
|
|
124
162
|
## Translations and writeups
|
|
125
163
|
|
|
164
|
+
|
|
126
165
|
- [initial idea and thoughts](https://ramblings.mcpher.com/a-proof-of-concept-implementation-of-apps-script-environment-on-node/)
|
|
127
166
|
- [Inside the volatile world of a Google Document](https://ramblings.mcpher.com/inside-the-volatile-world-of-a-google-document/
|
|
128
167
|
- [Apps Script Services on Node – using apps script libraries](https://ramblings.mcpher.com/apps-script-services-on-node-using-apps-script-libraries/)
|
|
@@ -4,26 +4,25 @@ import fs from 'fs/promises';
|
|
|
4
4
|
import { URL } from 'url';
|
|
5
5
|
|
|
6
6
|
const baseUrl = "https://developers.google.com/apps-script/reference/"
|
|
7
|
-
const
|
|
8
|
-
const outputFile = '/home/bruce/gas-fakes/gprompts/gas-inventory.json';
|
|
7
|
+
const outputFile = './gas-inventory.json';
|
|
9
8
|
|
|
10
|
-
const visited = new
|
|
11
|
-
const queue =
|
|
9
|
+
const visited = new Map();
|
|
10
|
+
const queue = [baseUrl]
|
|
12
11
|
|
|
12
|
+
const kebabCamel = (s) => {
|
|
13
|
+
return s.replace(/([-][a-z])/ig, ($1) => {
|
|
14
|
+
return $1.toUpperCase()
|
|
15
|
+
.replace('-', '')
|
|
16
|
+
});
|
|
17
|
+
};
|
|
13
18
|
async function scrape() {
|
|
14
19
|
const inventory = {};
|
|
15
20
|
|
|
16
21
|
while (queue.length > 0) {
|
|
17
22
|
const url = queue.shift();
|
|
18
|
-
if (visited.has(url)) {
|
|
19
|
-
continue;
|
|
20
|
-
}
|
|
21
|
-
visited.add(url);
|
|
22
|
-
|
|
23
23
|
console.log(`Scraping ${url}`);
|
|
24
24
|
const response = await got(url);
|
|
25
25
|
const $ = cheerio.load(response.body);
|
|
26
|
-
|
|
27
26
|
const serviceName = $('h1').text().split('\n').map(f=>f.replace(/^\s+/,'').trim()).filter (f=>f)[0];
|
|
28
27
|
console.log ('...starting service name',serviceName)
|
|
29
28
|
inventory[serviceName] = {
|
|
@@ -34,10 +33,23 @@ async function scrape() {
|
|
|
34
33
|
|
|
35
34
|
$('a').each((i, el) => {
|
|
36
35
|
const href = $(el).attr('href');
|
|
37
|
-
if (href && href.startsWith(
|
|
36
|
+
if (href && href.startsWith('/apps-script/reference')) {
|
|
38
37
|
const absoluteUrl = new URL(href, url).href;
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
const parentUrl = absoluteUrl.replace (/#.*/, '')
|
|
39
|
+
const method = kebabCamel(absoluteUrl.match(/#(.*)/) || ['', ''][1])
|
|
40
|
+
if (!visited.has(parentUrl)) {
|
|
41
|
+
console.log ('...adding to queue',parentUrl)
|
|
42
|
+
queue.push(parentUrl);
|
|
43
|
+
visited.set(parentUrl, {
|
|
44
|
+
url: parentUrl,
|
|
45
|
+
methods: new Map ()
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
if (method) {
|
|
49
|
+
visited.get(parentUrl).methods.set(absoluteUrl, {
|
|
50
|
+
url: absoluteUrl,
|
|
51
|
+
method
|
|
52
|
+
})
|
|
41
53
|
}
|
|
42
54
|
}
|
|
43
55
|
});
|
|
@@ -1,77 +1,173 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"name": "
|
|
4
|
-
"link": "https://developers.google.com/apps-script/reference/
|
|
2
|
+
"Forms Service": {
|
|
3
|
+
"name": "Forms Service",
|
|
4
|
+
"link": "https://developers.google.com/apps-script/reference/forms",
|
|
5
5
|
"classes": {
|
|
6
6
|
"Classes": {
|
|
7
7
|
"methods": {},
|
|
8
8
|
"properties": {}
|
|
9
9
|
},
|
|
10
|
-
"
|
|
10
|
+
"Alignment": {
|
|
11
11
|
"methods": {},
|
|
12
12
|
"properties": {}
|
|
13
13
|
},
|
|
14
|
-
"
|
|
14
|
+
"CheckboxGridItem": {
|
|
15
15
|
"methods": {},
|
|
16
16
|
"properties": {}
|
|
17
17
|
},
|
|
18
|
-
"
|
|
18
|
+
"CheckboxGridValidation": {
|
|
19
19
|
"methods": {},
|
|
20
20
|
"properties": {}
|
|
21
21
|
},
|
|
22
|
-
"
|
|
22
|
+
"CheckboxGridValidationBuilder": {
|
|
23
23
|
"methods": {},
|
|
24
24
|
"properties": {}
|
|
25
25
|
},
|
|
26
|
-
"
|
|
26
|
+
"CheckboxItem": {
|
|
27
27
|
"methods": {},
|
|
28
28
|
"properties": {}
|
|
29
29
|
},
|
|
30
|
-
"
|
|
30
|
+
"CheckboxValidation": {
|
|
31
31
|
"methods": {},
|
|
32
32
|
"properties": {}
|
|
33
33
|
},
|
|
34
|
-
"
|
|
34
|
+
"CheckboxValidationBuilder": {
|
|
35
35
|
"methods": {},
|
|
36
36
|
"properties": {}
|
|
37
37
|
},
|
|
38
|
-
"
|
|
38
|
+
"Choice": {
|
|
39
39
|
"methods": {},
|
|
40
40
|
"properties": {}
|
|
41
41
|
},
|
|
42
|
-
"
|
|
42
|
+
"DateItem": {
|
|
43
43
|
"methods": {},
|
|
44
44
|
"properties": {}
|
|
45
45
|
},
|
|
46
|
-
"
|
|
46
|
+
"DateTimeItem": {
|
|
47
47
|
"methods": {},
|
|
48
48
|
"properties": {}
|
|
49
49
|
},
|
|
50
|
-
"
|
|
50
|
+
"DestinationType": {
|
|
51
51
|
"methods": {},
|
|
52
52
|
"properties": {}
|
|
53
53
|
},
|
|
54
|
-
"
|
|
54
|
+
"DurationItem": {
|
|
55
55
|
"methods": {},
|
|
56
56
|
"properties": {}
|
|
57
57
|
},
|
|
58
|
-
"
|
|
58
|
+
"FeedbackType": {
|
|
59
59
|
"methods": {},
|
|
60
60
|
"properties": {}
|
|
61
61
|
},
|
|
62
|
-
"
|
|
62
|
+
"Form": {
|
|
63
63
|
"methods": {},
|
|
64
64
|
"properties": {}
|
|
65
65
|
},
|
|
66
|
-
"
|
|
66
|
+
"FormApp": {
|
|
67
67
|
"methods": {},
|
|
68
68
|
"properties": {}
|
|
69
69
|
},
|
|
70
|
-
"
|
|
70
|
+
"FormResponse": {
|
|
71
71
|
"methods": {},
|
|
72
72
|
"properties": {}
|
|
73
73
|
},
|
|
74
|
-
"
|
|
74
|
+
"GridItem": {
|
|
75
|
+
"methods": {},
|
|
76
|
+
"properties": {}
|
|
77
|
+
},
|
|
78
|
+
"GridValidation": {
|
|
79
|
+
"methods": {},
|
|
80
|
+
"properties": {}
|
|
81
|
+
},
|
|
82
|
+
"GridValidationBuilder": {
|
|
83
|
+
"methods": {},
|
|
84
|
+
"properties": {}
|
|
85
|
+
},
|
|
86
|
+
"ImageItem": {
|
|
87
|
+
"methods": {},
|
|
88
|
+
"properties": {}
|
|
89
|
+
},
|
|
90
|
+
"Item": {
|
|
91
|
+
"methods": {},
|
|
92
|
+
"properties": {}
|
|
93
|
+
},
|
|
94
|
+
"ItemResponse": {
|
|
95
|
+
"methods": {},
|
|
96
|
+
"properties": {}
|
|
97
|
+
},
|
|
98
|
+
"ItemType": {
|
|
99
|
+
"methods": {},
|
|
100
|
+
"properties": {}
|
|
101
|
+
},
|
|
102
|
+
"ListItem": {
|
|
103
|
+
"methods": {},
|
|
104
|
+
"properties": {}
|
|
105
|
+
},
|
|
106
|
+
"MultipleChoiceItem": {
|
|
107
|
+
"methods": {},
|
|
108
|
+
"properties": {}
|
|
109
|
+
},
|
|
110
|
+
"PageBreakItem": {
|
|
111
|
+
"methods": {},
|
|
112
|
+
"properties": {}
|
|
113
|
+
},
|
|
114
|
+
"PageNavigationType": {
|
|
115
|
+
"methods": {},
|
|
116
|
+
"properties": {}
|
|
117
|
+
},
|
|
118
|
+
"ParagraphTextItem": {
|
|
119
|
+
"methods": {},
|
|
120
|
+
"properties": {}
|
|
121
|
+
},
|
|
122
|
+
"ParagraphTextValidation": {
|
|
123
|
+
"methods": {},
|
|
124
|
+
"properties": {}
|
|
125
|
+
},
|
|
126
|
+
"ParagraphTextValidationBuilder": {
|
|
127
|
+
"methods": {},
|
|
128
|
+
"properties": {}
|
|
129
|
+
},
|
|
130
|
+
"QuizFeedback": {
|
|
131
|
+
"methods": {},
|
|
132
|
+
"properties": {}
|
|
133
|
+
},
|
|
134
|
+
"QuizFeedbackBuilder": {
|
|
135
|
+
"methods": {},
|
|
136
|
+
"properties": {}
|
|
137
|
+
},
|
|
138
|
+
"RatingIconType": {
|
|
139
|
+
"methods": {},
|
|
140
|
+
"properties": {}
|
|
141
|
+
},
|
|
142
|
+
"RatingItem": {
|
|
143
|
+
"methods": {},
|
|
144
|
+
"properties": {}
|
|
145
|
+
},
|
|
146
|
+
"ScaleItem": {
|
|
147
|
+
"methods": {},
|
|
148
|
+
"properties": {}
|
|
149
|
+
},
|
|
150
|
+
"SectionHeaderItem": {
|
|
151
|
+
"methods": {},
|
|
152
|
+
"properties": {}
|
|
153
|
+
},
|
|
154
|
+
"TextItem": {
|
|
155
|
+
"methods": {},
|
|
156
|
+
"properties": {}
|
|
157
|
+
},
|
|
158
|
+
"TextValidation": {
|
|
159
|
+
"methods": {},
|
|
160
|
+
"properties": {}
|
|
161
|
+
},
|
|
162
|
+
"TextValidationBuilder": {
|
|
163
|
+
"methods": {},
|
|
164
|
+
"properties": {}
|
|
165
|
+
},
|
|
166
|
+
"TimeItem": {
|
|
167
|
+
"methods": {},
|
|
168
|
+
"properties": {}
|
|
169
|
+
},
|
|
170
|
+
"VideoItem": {
|
|
75
171
|
"methods": {},
|
|
76
172
|
"properties": {}
|
|
77
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
["
|
|
1
|
+
["forms"]
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"version": "1.0.0",
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
|
+
"cheerio": "^1.1.2",
|
|
12
13
|
"jsdom": "^24.0.0",
|
|
13
14
|
"node-fetch": "^3.3.2"
|
|
14
15
|
}
|
|
@@ -151,6 +152,12 @@
|
|
|
151
152
|
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
|
|
152
153
|
"license": "MIT"
|
|
153
154
|
},
|
|
155
|
+
"node_modules/boolbase": {
|
|
156
|
+
"version": "1.0.0",
|
|
157
|
+
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
|
|
158
|
+
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
|
|
159
|
+
"license": "ISC"
|
|
160
|
+
},
|
|
154
161
|
"node_modules/call-bind-apply-helpers": {
|
|
155
162
|
"version": "1.0.2",
|
|
156
163
|
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
|
|
@@ -164,6 +171,48 @@
|
|
|
164
171
|
"node": ">= 0.4"
|
|
165
172
|
}
|
|
166
173
|
},
|
|
174
|
+
"node_modules/cheerio": {
|
|
175
|
+
"version": "1.1.2",
|
|
176
|
+
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz",
|
|
177
|
+
"integrity": "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==",
|
|
178
|
+
"license": "MIT",
|
|
179
|
+
"dependencies": {
|
|
180
|
+
"cheerio-select": "^2.1.0",
|
|
181
|
+
"dom-serializer": "^2.0.0",
|
|
182
|
+
"domhandler": "^5.0.3",
|
|
183
|
+
"domutils": "^3.2.2",
|
|
184
|
+
"encoding-sniffer": "^0.2.1",
|
|
185
|
+
"htmlparser2": "^10.0.0",
|
|
186
|
+
"parse5": "^7.3.0",
|
|
187
|
+
"parse5-htmlparser2-tree-adapter": "^7.1.0",
|
|
188
|
+
"parse5-parser-stream": "^7.1.2",
|
|
189
|
+
"undici": "^7.12.0",
|
|
190
|
+
"whatwg-mimetype": "^4.0.0"
|
|
191
|
+
},
|
|
192
|
+
"engines": {
|
|
193
|
+
"node": ">=20.18.1"
|
|
194
|
+
},
|
|
195
|
+
"funding": {
|
|
196
|
+
"url": "https://github.com/cheeriojs/cheerio?sponsor=1"
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
"node_modules/cheerio-select": {
|
|
200
|
+
"version": "2.1.0",
|
|
201
|
+
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
|
|
202
|
+
"integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
|
|
203
|
+
"license": "BSD-2-Clause",
|
|
204
|
+
"dependencies": {
|
|
205
|
+
"boolbase": "^1.0.0",
|
|
206
|
+
"css-select": "^5.1.0",
|
|
207
|
+
"css-what": "^6.1.0",
|
|
208
|
+
"domelementtype": "^2.3.0",
|
|
209
|
+
"domhandler": "^5.0.3",
|
|
210
|
+
"domutils": "^3.0.1"
|
|
211
|
+
},
|
|
212
|
+
"funding": {
|
|
213
|
+
"url": "https://github.com/sponsors/fb55"
|
|
214
|
+
}
|
|
215
|
+
},
|
|
167
216
|
"node_modules/combined-stream": {
|
|
168
217
|
"version": "1.0.8",
|
|
169
218
|
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
|
@@ -176,6 +225,34 @@
|
|
|
176
225
|
"node": ">= 0.8"
|
|
177
226
|
}
|
|
178
227
|
},
|
|
228
|
+
"node_modules/css-select": {
|
|
229
|
+
"version": "5.2.2",
|
|
230
|
+
"resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
|
|
231
|
+
"integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
|
|
232
|
+
"license": "BSD-2-Clause",
|
|
233
|
+
"dependencies": {
|
|
234
|
+
"boolbase": "^1.0.0",
|
|
235
|
+
"css-what": "^6.1.0",
|
|
236
|
+
"domhandler": "^5.0.2",
|
|
237
|
+
"domutils": "^3.0.1",
|
|
238
|
+
"nth-check": "^2.0.1"
|
|
239
|
+
},
|
|
240
|
+
"funding": {
|
|
241
|
+
"url": "https://github.com/sponsors/fb55"
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
"node_modules/css-what": {
|
|
245
|
+
"version": "6.2.2",
|
|
246
|
+
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
|
|
247
|
+
"integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
|
|
248
|
+
"license": "BSD-2-Clause",
|
|
249
|
+
"engines": {
|
|
250
|
+
"node": ">= 6"
|
|
251
|
+
},
|
|
252
|
+
"funding": {
|
|
253
|
+
"url": "https://github.com/sponsors/fb55"
|
|
254
|
+
}
|
|
255
|
+
},
|
|
179
256
|
"node_modules/cssstyle": {
|
|
180
257
|
"version": "4.6.0",
|
|
181
258
|
"resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz",
|
|
@@ -249,6 +326,61 @@
|
|
|
249
326
|
"node": ">=0.4.0"
|
|
250
327
|
}
|
|
251
328
|
},
|
|
329
|
+
"node_modules/dom-serializer": {
|
|
330
|
+
"version": "2.0.0",
|
|
331
|
+
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
|
|
332
|
+
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
|
|
333
|
+
"license": "MIT",
|
|
334
|
+
"dependencies": {
|
|
335
|
+
"domelementtype": "^2.3.0",
|
|
336
|
+
"domhandler": "^5.0.2",
|
|
337
|
+
"entities": "^4.2.0"
|
|
338
|
+
},
|
|
339
|
+
"funding": {
|
|
340
|
+
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
"node_modules/domelementtype": {
|
|
344
|
+
"version": "2.3.0",
|
|
345
|
+
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
|
|
346
|
+
"integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
|
|
347
|
+
"funding": [
|
|
348
|
+
{
|
|
349
|
+
"type": "github",
|
|
350
|
+
"url": "https://github.com/sponsors/fb55"
|
|
351
|
+
}
|
|
352
|
+
],
|
|
353
|
+
"license": "BSD-2-Clause"
|
|
354
|
+
},
|
|
355
|
+
"node_modules/domhandler": {
|
|
356
|
+
"version": "5.0.3",
|
|
357
|
+
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
|
|
358
|
+
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
|
|
359
|
+
"license": "BSD-2-Clause",
|
|
360
|
+
"dependencies": {
|
|
361
|
+
"domelementtype": "^2.3.0"
|
|
362
|
+
},
|
|
363
|
+
"engines": {
|
|
364
|
+
"node": ">= 4"
|
|
365
|
+
},
|
|
366
|
+
"funding": {
|
|
367
|
+
"url": "https://github.com/fb55/domhandler?sponsor=1"
|
|
368
|
+
}
|
|
369
|
+
},
|
|
370
|
+
"node_modules/domutils": {
|
|
371
|
+
"version": "3.2.2",
|
|
372
|
+
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
|
|
373
|
+
"integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
|
|
374
|
+
"license": "BSD-2-Clause",
|
|
375
|
+
"dependencies": {
|
|
376
|
+
"dom-serializer": "^2.0.0",
|
|
377
|
+
"domelementtype": "^2.3.0",
|
|
378
|
+
"domhandler": "^5.0.3"
|
|
379
|
+
},
|
|
380
|
+
"funding": {
|
|
381
|
+
"url": "https://github.com/fb55/domutils?sponsor=1"
|
|
382
|
+
}
|
|
383
|
+
},
|
|
252
384
|
"node_modules/dunder-proto": {
|
|
253
385
|
"version": "1.0.1",
|
|
254
386
|
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
|
@@ -263,6 +395,31 @@
|
|
|
263
395
|
"node": ">= 0.4"
|
|
264
396
|
}
|
|
265
397
|
},
|
|
398
|
+
"node_modules/encoding-sniffer": {
|
|
399
|
+
"version": "0.2.1",
|
|
400
|
+
"resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
|
|
401
|
+
"integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==",
|
|
402
|
+
"license": "MIT",
|
|
403
|
+
"dependencies": {
|
|
404
|
+
"iconv-lite": "^0.6.3",
|
|
405
|
+
"whatwg-encoding": "^3.1.1"
|
|
406
|
+
},
|
|
407
|
+
"funding": {
|
|
408
|
+
"url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
|
|
409
|
+
}
|
|
410
|
+
},
|
|
411
|
+
"node_modules/entities": {
|
|
412
|
+
"version": "4.5.0",
|
|
413
|
+
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
|
|
414
|
+
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
|
|
415
|
+
"license": "BSD-2-Clause",
|
|
416
|
+
"engines": {
|
|
417
|
+
"node": ">=0.12"
|
|
418
|
+
},
|
|
419
|
+
"funding": {
|
|
420
|
+
"url": "https://github.com/fb55/entities?sponsor=1"
|
|
421
|
+
}
|
|
422
|
+
},
|
|
266
423
|
"node_modules/es-define-property": {
|
|
267
424
|
"version": "1.0.1",
|
|
268
425
|
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
|
|
@@ -468,6 +625,37 @@
|
|
|
468
625
|
"node": ">=18"
|
|
469
626
|
}
|
|
470
627
|
},
|
|
628
|
+
"node_modules/htmlparser2": {
|
|
629
|
+
"version": "10.0.0",
|
|
630
|
+
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz",
|
|
631
|
+
"integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==",
|
|
632
|
+
"funding": [
|
|
633
|
+
"https://github.com/fb55/htmlparser2?sponsor=1",
|
|
634
|
+
{
|
|
635
|
+
"type": "github",
|
|
636
|
+
"url": "https://github.com/sponsors/fb55"
|
|
637
|
+
}
|
|
638
|
+
],
|
|
639
|
+
"license": "MIT",
|
|
640
|
+
"dependencies": {
|
|
641
|
+
"domelementtype": "^2.3.0",
|
|
642
|
+
"domhandler": "^5.0.3",
|
|
643
|
+
"domutils": "^3.2.1",
|
|
644
|
+
"entities": "^6.0.0"
|
|
645
|
+
}
|
|
646
|
+
},
|
|
647
|
+
"node_modules/htmlparser2/node_modules/entities": {
|
|
648
|
+
"version": "6.0.1",
|
|
649
|
+
"resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
|
|
650
|
+
"integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
|
|
651
|
+
"license": "BSD-2-Clause",
|
|
652
|
+
"engines": {
|
|
653
|
+
"node": ">=0.12"
|
|
654
|
+
},
|
|
655
|
+
"funding": {
|
|
656
|
+
"url": "https://github.com/fb55/entities?sponsor=1"
|
|
657
|
+
}
|
|
658
|
+
},
|
|
471
659
|
"node_modules/http-proxy-agent": {
|
|
472
660
|
"version": "7.0.2",
|
|
473
661
|
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
|
|
@@ -631,6 +819,18 @@
|
|
|
631
819
|
"url": "https://opencollective.com/node-fetch"
|
|
632
820
|
}
|
|
633
821
|
},
|
|
822
|
+
"node_modules/nth-check": {
|
|
823
|
+
"version": "2.1.1",
|
|
824
|
+
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
|
|
825
|
+
"integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
|
|
826
|
+
"license": "BSD-2-Clause",
|
|
827
|
+
"dependencies": {
|
|
828
|
+
"boolbase": "^1.0.0"
|
|
829
|
+
},
|
|
830
|
+
"funding": {
|
|
831
|
+
"url": "https://github.com/fb55/nth-check?sponsor=1"
|
|
832
|
+
}
|
|
833
|
+
},
|
|
634
834
|
"node_modules/nwsapi": {
|
|
635
835
|
"version": "2.2.22",
|
|
636
836
|
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz",
|
|
@@ -648,6 +848,31 @@
|
|
|
648
848
|
"url": "https://github.com/inikulin/parse5?sponsor=1"
|
|
649
849
|
}
|
|
650
850
|
},
|
|
851
|
+
"node_modules/parse5-htmlparser2-tree-adapter": {
|
|
852
|
+
"version": "7.1.0",
|
|
853
|
+
"resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
|
|
854
|
+
"integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==",
|
|
855
|
+
"license": "MIT",
|
|
856
|
+
"dependencies": {
|
|
857
|
+
"domhandler": "^5.0.3",
|
|
858
|
+
"parse5": "^7.0.0"
|
|
859
|
+
},
|
|
860
|
+
"funding": {
|
|
861
|
+
"url": "https://github.com/inikulin/parse5?sponsor=1"
|
|
862
|
+
}
|
|
863
|
+
},
|
|
864
|
+
"node_modules/parse5-parser-stream": {
|
|
865
|
+
"version": "7.1.2",
|
|
866
|
+
"resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
|
|
867
|
+
"integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==",
|
|
868
|
+
"license": "MIT",
|
|
869
|
+
"dependencies": {
|
|
870
|
+
"parse5": "^7.0.0"
|
|
871
|
+
},
|
|
872
|
+
"funding": {
|
|
873
|
+
"url": "https://github.com/inikulin/parse5?sponsor=1"
|
|
874
|
+
}
|
|
875
|
+
},
|
|
651
876
|
"node_modules/parse5/node_modules/entities": {
|
|
652
877
|
"version": "6.0.1",
|
|
653
878
|
"resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
|
|
@@ -748,6 +973,15 @@
|
|
|
748
973
|
"node": ">=18"
|
|
749
974
|
}
|
|
750
975
|
},
|
|
976
|
+
"node_modules/undici": {
|
|
977
|
+
"version": "7.16.0",
|
|
978
|
+
"resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz",
|
|
979
|
+
"integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==",
|
|
980
|
+
"license": "MIT",
|
|
981
|
+
"engines": {
|
|
982
|
+
"node": ">=20.18.1"
|
|
983
|
+
}
|
|
984
|
+
},
|
|
751
985
|
"node_modules/universalify": {
|
|
752
986
|
"version": "0.2.0",
|
|
753
987
|
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
|