@mcpher/gas-fakes 1.2.25 → 1.2.27

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.
Files changed (50) hide show
  1. package/README.RU.md +3 -0
  2. package/README.md +3 -0
  3. package/package.json +1 -1
  4. package/src/cli/app.js +16 -1
  5. package/src/cli/executor.js +25 -1
  6. package/src/cli/mcp.js +5 -4
  7. package/src/cli/setup.js +358 -55
  8. package/src/cli/utils.js +4 -6
  9. package/src/index.js +1 -0
  10. package/src/services/advdrive/fakeadvdrivefiles.js +13 -36
  11. package/src/services/enums/slidesenums.js +1 -1
  12. package/src/services/formapp/fakechoiceitem.js +1 -1
  13. package/src/services/formapp/fakeform.js +4 -3
  14. package/src/services/formapp/fakeformitem.js +1 -2
  15. package/src/services/formapp/fakeformresponse.js +3 -2
  16. package/src/services/formapp/fakelistitem.js +3 -2
  17. package/src/services/libhandlerapp/app.js +9 -0
  18. package/src/services/libhandlerapp/fakelibhandler.js +39 -0
  19. package/src/services/libhandlerapp/fakelibhandlerapp.js +54 -0
  20. package/src/services/libhandlerapp/fakelibrary.js +117 -0
  21. package/src/services/scriptapp/behavior.js +1 -1
  22. package/src/services/slidesapp/fakeaffinetransform.js +55 -0
  23. package/src/services/slidesapp/fakeaffinetransformbuilder.js +64 -0
  24. package/src/services/slidesapp/fakeautofit.js +49 -0
  25. package/src/services/slidesapp/fakeautotext.js +29 -0
  26. package/src/services/slidesapp/fakeconnectionsite.js +24 -0
  27. package/src/services/slidesapp/fakelayout.js +38 -0
  28. package/src/services/slidesapp/fakeline.js +195 -0
  29. package/src/services/slidesapp/fakelinefill.js +58 -0
  30. package/src/services/slidesapp/fakelink.js +31 -0
  31. package/src/services/slidesapp/fakemaster.js +28 -0
  32. package/src/services/slidesapp/fakenotespage.js +19 -0
  33. package/src/services/slidesapp/fakepagebackground.js +17 -0
  34. package/src/services/slidesapp/fakepageelement.js +395 -0
  35. package/src/services/slidesapp/fakeparagraph.js +46 -0
  36. package/src/services/slidesapp/fakepoint.js +24 -0
  37. package/src/services/slidesapp/fakepresentation.js +61 -3
  38. package/src/services/slidesapp/fakeshape.js +49 -0
  39. package/src/services/slidesapp/fakeslide.js +232 -0
  40. package/src/services/slidesapp/fakeslidesapp.js +5 -0
  41. package/src/services/slidesapp/faketextrange.js +253 -0
  42. package/src/services/slidesapp/pageelementfactory.js +19 -0
  43. package/src/services/stores/gasflex.js +1 -1
  44. package/src/services/urlfetchapp/app.js +17 -1
  45. package/src/support/sxdrive.js +35 -15
  46. package/src/support/sxfetch.js +39 -13
  47. package/src/support/sxforms.js +3 -1
  48. package/src/support/syncit.js +25 -3
  49. package/src/support/utils.js +2 -0
  50. package/testlib.sh +2 -1
package/README.RU.md CHANGED
@@ -348,6 +348,9 @@ const getParentsIterator = ({
348
348
  - [gemini](gemini-observations.md) - some reflections and experiences on using gemini to help code large projects
349
349
  - [named colors](named-colors.md)
350
350
  - [sandbox](sandbox.md)
351
+ - [using apps script libraries with gas-fakes](libraries.md)
352
+ - [how libhandler works](libhandler.md)
353
+ - [article:using apps script libraries with gas-fakes](https://ramblings.mcpher.com/how-to-use-apps-script-libraries-directly-from-node/)
351
354
  - [named range identity](named-range-identity.md)
352
355
  - [adc and restricted scopes](https://ramblings.mcpher.com/how-to-allow-access-to-sensitive-scopes-with-application-default-credentials/)
353
356
  - [push test pull](pull-test-push.md)
package/README.md CHANGED
@@ -167,6 +167,9 @@ As I mentioned earlier, to take this further, I'm going to need a lot of help to
167
167
  - [gemini](gemini-observations.md) - some reflections and experiences on using gemini to help code large projects
168
168
  - [named colors](named-colors.md)
169
169
  - [sandbox](sandbox.md)
170
+ - [using apps script libraries with gas-fakes](libraries.md)
171
+ - [how libhandler works](libhandler.md)
172
+ - [article:using apps script libraries with gas-fakes](https://ramblings.mcpher.com/how-to-use-apps-script-libraries-directly-from-node/)
170
173
  - [named range identity](named-range-identity.md)
171
174
  - [adc and restricted scopes](https://ramblings.mcpher.com/how-to-allow-access-to-sensitive-scopes-with-application-default-credentials/)
172
175
  - [push test pull](pull-test-push.md)
package/package.json CHANGED
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "name": "@mcpher/gas-fakes",
36
36
  "author": "bruce mcpherson",
37
- "version": "1.2.25",
37
+ "version": "1.2.27",
38
38
  "license": "MIT",
39
39
  "main": "main.js",
40
40
  "description": "A proof of concept implementation of Apps Script Environment on Node",
package/src/cli/app.js CHANGED
@@ -138,9 +138,24 @@ export async function main() {
138
138
  .command("enableAPIs")
139
139
  .description("Enables or disables required Google Cloud APIs.")
140
140
  .option("--all", "Enable all default APIs.")
141
+ // Drive
141
142
  .option("--edrive", "Enable drive.googleapis.com")
142
143
  .option("--ddrive", "Disable drive.googleapis.com")
143
- // ... (other flags implied by setup.js logic)
144
+ // Sheets
145
+ .option("--esheets", "Enable sheets.googleapis.com")
146
+ .option("--dsheets", "Disable sheets.googleapis.com")
147
+ // Forms
148
+ .option("--eforms", "Enable forms.googleapis.com")
149
+ .option("--dforms", "Disable forms.googleapis.com")
150
+ // Docs
151
+ .option("--edocs", "Enable docs.googleapis.com")
152
+ .option("--ddocs", "Disable docs.googleapis.com")
153
+ // Gmail
154
+ .option("--egmail", "Enable gmail.googleapis.com")
155
+ .option("--dgmail", "Disable gmail.googleapis.com")
156
+ // Logging
157
+ .option("--elogging", "Enable logging.googleapis.com")
158
+ .option("--dlogging", "Disable logging.googleapis.com")
144
159
  .action(enableGoogleAPIs);
145
160
 
146
161
  // --- MCP Command ---
@@ -43,6 +43,29 @@ function generateItemWhitelistScript(items) {
43
43
  return `behavior.setIdWhitelist([${whitelistItemsString}]);`;
44
44
  }
45
45
 
46
+ function generateGmailSandbox(gmailSandbox) {
47
+ if (!gmailSandbox) return [];
48
+ const { emailWhitelist, usageLimit, labelWhitelist, cleanup } = gmailSandbox;
49
+ const temp = ["const gmailSettings = behavior.sandboxService.GmailApp;"];
50
+ if (emailWhitelist && emailWhitelist.length > 0) {
51
+ temp.push(
52
+ `gmailSettings.emailWhitelist = ${JSON.stringify(emailWhitelist)};`
53
+ );
54
+ }
55
+ if (gmailSandbox.hasOwnProperty("cleanup")) {
56
+ temp.push(`gmailSettings.cleanup = ${cleanup};`);
57
+ }
58
+ if (usageLimit) {
59
+ temp.push(`gmailSettings.usageLimit = ${usageLimit};`);
60
+ }
61
+ if (labelWhitelist && labelWhitelist.length > 0) {
62
+ temp.push(
63
+ `gmailSettings.labelWhitelist = ${JSON.stringify(labelWhitelist)};`
64
+ );
65
+ }
66
+ return temp;
67
+ }
68
+
46
69
  function generateSandboxSetupScript(sandboxConfig) {
47
70
  const script = [
48
71
  "const behavior = ScriptApp.__behavior;",
@@ -50,11 +73,12 @@ function generateSandboxSetupScript(sandboxConfig) {
50
73
  "behavior.strictSandbox = true;",
51
74
  ];
52
75
 
53
- const { whitelistServices, blacklistServices, whitelistItems } =
76
+ const { whitelistServices, blacklistServices, whitelistItems, gmailSandbox } =
54
77
  sandboxConfig;
55
78
 
56
79
  script.push(...generateServiceWhitelistScript(whitelistServices));
57
80
  script.push(...generateServiceBlacklistScript(blacklistServices));
81
+ script.push(...generateGmailSandbox(gmailSandbox));
58
82
 
59
83
  const itemWhitelist = generateItemWhitelistScript(whitelistItems);
60
84
  if (itemWhitelist) {
package/src/cli/mcp.js CHANGED
@@ -157,7 +157,10 @@ function registerDefaultTool(server) {
157
157
  if (!args.filename || !args.tools) {
158
158
  return {
159
159
  content: [
160
- { type: "text", text: "Error: `filename` and `tools` are required." },
160
+ {
161
+ type: "text",
162
+ text: "Error: `filename` and `tools` are required.",
163
+ },
161
164
  ],
162
165
  isError: true,
163
166
  };
@@ -166,11 +169,9 @@ function registerDefaultTool(server) {
166
169
  const tool_ar = [];
167
170
  for (let i = 0; i < args.tools.length; i++) {
168
171
  const { name, schema, gas_script, libraries } = args.tools[i];
169
- // Note: This generation logic is complex; assuming gas_library is empty for generation context,
170
- // or simply rendering the array strings.
171
172
  tool_ar.push(
172
173
  `{ name: "${name}", schema: ${schema}, func: (object = {}) => { \n\n${gas_script} }, libraries: ${JSON.stringify(
173
- libraries
174
+ libraries || []
174
175
  )} }`
175
176
  );
176
177
  }