apify-cli 0.19.3-beta.5 → 1.0.0-beta.0

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 (231) hide show
  1. package/README.md +73 -52
  2. package/bin/dev.cmd +3 -0
  3. package/bin/dev.js +16 -0
  4. package/bin/run.js +16 -0
  5. package/dist/.tsbuildinfo +1 -0
  6. package/dist/commands/actor/get-input.d.ts +6 -0
  7. package/dist/commands/actor/get-input.d.ts.map +1 -0
  8. package/dist/commands/actor/get-input.js +14 -0
  9. package/dist/commands/actor/get-input.js.map +1 -0
  10. package/dist/commands/actor/get-value.d.ts +9 -0
  11. package/dist/commands/actor/get-value.d.ts.map +1 -0
  12. package/dist/commands/actor/get-value.js +27 -0
  13. package/dist/commands/actor/get-value.js.map +1 -0
  14. package/dist/commands/actor/index.d.ts +6 -0
  15. package/dist/commands/actor/index.d.ts.map +1 -0
  16. package/dist/commands/actor/index.js +13 -0
  17. package/dist/commands/actor/index.js.map +1 -0
  18. package/dist/commands/actor/push-data.d.ts +11 -0
  19. package/dist/commands/actor/push-data.d.ts.map +1 -0
  20. package/dist/commands/actor/push-data.js +56 -0
  21. package/dist/commands/actor/push-data.js.map +1 -0
  22. package/dist/commands/actor/set-value.d.ts +15 -0
  23. package/dist/commands/actor/set-value.d.ts.map +1 -0
  24. package/dist/commands/actor/set-value.js +76 -0
  25. package/dist/commands/actor/set-value.js.map +1 -0
  26. package/dist/commands/call.d.ts +15 -0
  27. package/dist/commands/call.d.ts.map +1 -0
  28. package/dist/commands/call.js +142 -0
  29. package/dist/commands/call.js.map +1 -0
  30. package/dist/commands/check-version.d.ts +11 -0
  31. package/dist/commands/check-version.d.ts.map +1 -0
  32. package/dist/commands/check-version.js +39 -0
  33. package/dist/commands/check-version.js.map +1 -0
  34. package/dist/commands/create.d.ts +14 -0
  35. package/dist/commands/create.d.ts.map +1 -0
  36. package/dist/commands/create.js +181 -0
  37. package/dist/commands/create.js.map +1 -0
  38. package/dist/commands/edit-input-schema.d.ts +11 -0
  39. package/dist/commands/edit-input-schema.d.ts.map +1 -0
  40. package/{src → dist}/commands/edit-input-schema.js +81 -85
  41. package/dist/commands/edit-input-schema.js.map +1 -0
  42. package/dist/commands/info.d.ts +6 -0
  43. package/dist/commands/info.d.ts.map +1 -0
  44. package/dist/commands/info.js +26 -0
  45. package/dist/commands/info.js.map +1 -0
  46. package/dist/commands/init-wrap-scrapy.d.ts +10 -0
  47. package/dist/commands/init-wrap-scrapy.d.ts.map +1 -0
  48. package/dist/commands/init-wrap-scrapy.js +41 -0
  49. package/dist/commands/init-wrap-scrapy.js.map +1 -0
  50. package/dist/commands/init.d.ts +12 -0
  51. package/dist/commands/init.d.ts.map +1 -0
  52. package/dist/commands/init.js +88 -0
  53. package/dist/commands/init.js.map +1 -0
  54. package/dist/commands/login-new.d.ts +10 -0
  55. package/dist/commands/login-new.d.ts.map +1 -0
  56. package/{src → dist}/commands/login-new.js +79 -82
  57. package/dist/commands/login-new.js.map +1 -0
  58. package/dist/commands/login.d.ts +9 -0
  59. package/dist/commands/login.d.ts.map +1 -0
  60. package/dist/commands/login.js +43 -0
  61. package/dist/commands/login.js.map +1 -0
  62. package/dist/commands/logout.d.ts +6 -0
  63. package/dist/commands/logout.d.ts.map +1 -0
  64. package/dist/commands/logout.js +20 -0
  65. package/dist/commands/logout.js.map +1 -0
  66. package/dist/commands/pull.d.ts +12 -0
  67. package/dist/commands/pull.d.ts.map +1 -0
  68. package/dist/commands/pull.js +148 -0
  69. package/dist/commands/pull.js.map +1 -0
  70. package/dist/commands/push.d.ts +16 -0
  71. package/dist/commands/push.d.ts.map +1 -0
  72. package/dist/commands/push.js +242 -0
  73. package/dist/commands/push.js.map +1 -0
  74. package/dist/commands/run.d.ts +12 -0
  75. package/dist/commands/run.d.ts.map +1 -0
  76. package/{src → dist}/commands/run.js +96 -109
  77. package/dist/commands/run.js.map +1 -0
  78. package/dist/commands/secrets/add.d.ts +10 -0
  79. package/dist/commands/secrets/add.d.ts.map +1 -0
  80. package/dist/commands/secrets/add.js +31 -0
  81. package/dist/commands/secrets/add.js.map +1 -0
  82. package/dist/commands/secrets/index.d.ts +6 -0
  83. package/dist/commands/secrets/index.d.ts.map +1 -0
  84. package/dist/commands/secrets/index.js +24 -0
  85. package/dist/commands/secrets/index.js.map +1 -0
  86. package/dist/commands/secrets/rm.d.ts +9 -0
  87. package/dist/commands/secrets/rm.d.ts.map +1 -0
  88. package/dist/commands/secrets/rm.js +27 -0
  89. package/dist/commands/secrets/rm.js.map +1 -0
  90. package/dist/commands/vis.d.ts +9 -0
  91. package/dist/commands/vis.d.ts.map +1 -0
  92. package/dist/commands/vis.js +52 -0
  93. package/dist/commands/vis.js.map +1 -0
  94. package/dist/hooks/init.d.ts +7 -0
  95. package/dist/hooks/init.d.ts.map +1 -0
  96. package/dist/hooks/init.js +17 -0
  97. package/dist/hooks/init.js.map +1 -0
  98. package/dist/index.d.ts +2 -0
  99. package/dist/index.d.ts.map +1 -0
  100. package/dist/index.js +3 -0
  101. package/dist/index.js.map +1 -0
  102. package/dist/lib/actor.d.ts +27 -0
  103. package/dist/lib/actor.d.ts.map +1 -0
  104. package/{src → dist}/lib/actor.js +21 -44
  105. package/dist/lib/actor.js.map +1 -0
  106. package/dist/lib/apify-oclif-help.d.ts +15 -0
  107. package/dist/lib/apify-oclif-help.d.ts.map +1 -0
  108. package/dist/lib/apify-oclif-help.js +19 -0
  109. package/dist/lib/apify-oclif-help.js.map +1 -0
  110. package/dist/lib/apify_command.d.ts +22 -0
  111. package/dist/lib/apify_command.d.ts.map +1 -0
  112. package/dist/lib/apify_command.js +103 -0
  113. package/dist/lib/apify_command.js.map +1 -0
  114. package/dist/lib/community.d.ts +2 -0
  115. package/dist/lib/community.d.ts.map +1 -0
  116. package/dist/lib/community.js +4 -0
  117. package/dist/lib/community.js.map +1 -0
  118. package/dist/lib/consts.d.ts +45 -0
  119. package/dist/lib/consts.d.ts.map +1 -0
  120. package/dist/lib/consts.js +54 -0
  121. package/dist/lib/consts.js.map +1 -0
  122. package/dist/lib/create-utils.d.ts +8 -0
  123. package/dist/lib/create-utils.d.ts.map +1 -0
  124. package/{src → dist}/lib/create-utils.js +74 -113
  125. package/dist/lib/create-utils.js.map +1 -0
  126. package/dist/lib/exec.d.ts +4 -0
  127. package/dist/lib/exec.d.ts.map +1 -0
  128. package/{src → dist}/lib/exec.js +15 -16
  129. package/dist/lib/exec.js.map +1 -0
  130. package/dist/lib/files.d.ts +14 -0
  131. package/dist/lib/files.d.ts.map +1 -0
  132. package/dist/lib/files.js +58 -0
  133. package/dist/lib/files.js.map +1 -0
  134. package/dist/lib/input_schema.d.ts +26 -0
  135. package/dist/lib/input_schema.d.ts.map +1 -0
  136. package/{src → dist}/lib/input_schema.js +34 -55
  137. package/dist/lib/input_schema.js.map +1 -0
  138. package/dist/lib/local_state.d.ts +11 -0
  139. package/dist/lib/local_state.d.ts.map +1 -0
  140. package/dist/lib/local_state.js +27 -0
  141. package/dist/lib/local_state.js.map +1 -0
  142. package/dist/lib/outputs.d.ts +7 -0
  143. package/dist/lib/outputs.d.ts.map +1 -0
  144. package/{src → dist}/lib/outputs.js +8 -15
  145. package/dist/lib/outputs.js.map +1 -0
  146. package/dist/lib/project_analyzer.d.ts +4 -0
  147. package/dist/lib/project_analyzer.d.ts.map +1 -0
  148. package/{src → dist}/lib/project_analyzer.js +6 -11
  149. package/dist/lib/project_analyzer.js.map +1 -0
  150. package/dist/lib/projects/CrawleeAnalyzer.d.ts +4 -0
  151. package/dist/lib/projects/CrawleeAnalyzer.d.ts.map +1 -0
  152. package/{src → dist}/lib/projects/CrawleeAnalyzer.js +7 -24
  153. package/dist/lib/projects/CrawleeAnalyzer.js.map +1 -0
  154. package/dist/lib/projects/OldApifySDKAnalyzer.d.ts +4 -0
  155. package/dist/lib/projects/OldApifySDKAnalyzer.d.ts.map +1 -0
  156. package/{src → dist}/lib/projects/OldApifySDKAnalyzer.js +9 -32
  157. package/dist/lib/projects/OldApifySDKAnalyzer.js.map +1 -0
  158. package/dist/lib/projects/scrapy/ScrapyProjectAnalyzer.d.ts +17 -0
  159. package/dist/lib/projects/scrapy/ScrapyProjectAnalyzer.d.ts.map +1 -0
  160. package/{src/lib/scrapy-wrapper → dist/lib/projects/scrapy}/ScrapyProjectAnalyzer.js +33 -36
  161. package/dist/lib/projects/scrapy/ScrapyProjectAnalyzer.js.map +1 -0
  162. package/dist/lib/projects/scrapy/Spider.d.ts +14 -0
  163. package/dist/lib/projects/scrapy/Spider.d.ts.map +1 -0
  164. package/dist/lib/projects/scrapy/Spider.js +33 -0
  165. package/dist/lib/projects/scrapy/Spider.js.map +1 -0
  166. package/dist/lib/projects/scrapy/SpiderFileAnalyzer.d.ts +7 -0
  167. package/dist/lib/projects/scrapy/SpiderFileAnalyzer.d.ts.map +1 -0
  168. package/dist/lib/projects/scrapy/SpiderFileAnalyzer.js +25 -0
  169. package/dist/lib/projects/scrapy/SpiderFileAnalyzer.js.map +1 -0
  170. package/dist/lib/projects/scrapy/wrapScrapyProject.d.ts +4 -0
  171. package/dist/lib/projects/scrapy/wrapScrapyProject.d.ts.map +1 -0
  172. package/{src/lib/scrapy-wrapper/index.js → dist/lib/projects/scrapy/wrapScrapyProject.js} +43 -73
  173. package/dist/lib/projects/scrapy/wrapScrapyProject.js.map +1 -0
  174. package/dist/lib/projects/shared.d.ts +2 -0
  175. package/dist/lib/projects/shared.d.ts.map +1 -0
  176. package/dist/lib/projects/shared.js +13 -0
  177. package/dist/lib/projects/shared.js.map +1 -0
  178. package/dist/lib/secrets.d.ts +22 -0
  179. package/dist/lib/secrets.d.ts.map +1 -0
  180. package/{src → dist}/lib/secrets.js +32 -40
  181. package/dist/lib/secrets.js.map +1 -0
  182. package/dist/lib/telemetry.d.ts +21 -0
  183. package/dist/lib/telemetry.d.ts.map +1 -0
  184. package/dist/lib/telemetry.js +87 -0
  185. package/dist/lib/telemetry.js.map +1 -0
  186. package/dist/lib/types.d.ts +11 -0
  187. package/dist/lib/types.d.ts.map +1 -0
  188. package/dist/lib/types.js +2 -0
  189. package/dist/lib/types.js.map +1 -0
  190. package/dist/lib/utils.d.ts +106 -0
  191. package/dist/lib/utils.d.ts.map +1 -0
  192. package/{src → dist}/lib/utils.js +235 -347
  193. package/dist/lib/utils.js.map +1 -0
  194. package/dist/lib/version_check.d.ts +14 -0
  195. package/dist/lib/version_check.d.ts.map +1 -0
  196. package/{src → dist}/lib/version_check.js +25 -54
  197. package/dist/lib/version_check.js.map +1 -0
  198. package/oclif.manifest.json +722 -1
  199. package/package.json +137 -113
  200. package/index.js +0 -1
  201. package/src/bin/run +0 -16
  202. package/src/commands/actor/get-input.js +0 -12
  203. package/src/commands/actor/get-value.js +0 -23
  204. package/src/commands/actor/index.js +0 -13
  205. package/src/commands/actor/push-data.js +0 -44
  206. package/src/commands/actor/set-value.js +0 -63
  207. package/src/commands/call.js +0 -131
  208. package/src/commands/check-version.js +0 -28
  209. package/src/commands/create.js +0 -203
  210. package/src/commands/info.js +0 -24
  211. package/src/commands/init-wrap-scrapy.js +0 -34
  212. package/src/commands/init.js +0 -84
  213. package/src/commands/login.js +0 -40
  214. package/src/commands/logout.js +0 -18
  215. package/src/commands/pull.js +0 -154
  216. package/src/commands/push.js +0 -234
  217. package/src/commands/secrets/add.js +0 -28
  218. package/src/commands/secrets/index.js +0 -24
  219. package/src/commands/secrets/rm.js +0 -23
  220. package/src/commands/vis.js +0 -50
  221. package/src/hooks/init.js +0 -16
  222. package/src/lib/apify-oclif-help.js +0 -23
  223. package/src/lib/apify_command.js +0 -82
  224. package/src/lib/community.js +0 -3
  225. package/src/lib/consts.js +0 -69
  226. package/src/lib/files.js +0 -76
  227. package/src/lib/local_state.js +0 -39
  228. package/src/lib/scrapy-wrapper/Spider.js +0 -10
  229. package/src/lib/scrapy-wrapper/SpiderFileAnalyzer.js +0 -26
  230. package/src/lib/telemetry.js +0 -104
  231. /package/{src/bin → bin}/run.cmd +0 -0
@@ -0,0 +1,33 @@
1
+ export class Spider {
2
+ constructor(data) {
3
+ Object.defineProperty(this, "name", {
4
+ enumerable: true,
5
+ configurable: true,
6
+ writable: true,
7
+ value: void 0
8
+ });
9
+ Object.defineProperty(this, "class_name", {
10
+ enumerable: true,
11
+ configurable: true,
12
+ writable: true,
13
+ value: void 0
14
+ });
15
+ Object.defineProperty(this, "start_urls", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: void 0
20
+ });
21
+ Object.defineProperty(this, "pathname", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: void 0
26
+ });
27
+ this.name = data.name;
28
+ this.class_name = data.class_name;
29
+ this.start_urls = data.start_urls;
30
+ this.pathname = data.pathname;
31
+ }
32
+ }
33
+ //# sourceMappingURL=Spider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spider.js","sourceRoot":"","sources":["../../../../src/lib/projects/scrapy/Spider.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,MAAM;IAMf,YAAY,IAAgB;QAL5B;;;;;WAAc;QACd;;;;;WAAmB;QACnB;;;;;WAAoB;QACpB;;;;;WAAiB;QAGb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAClC,CAAC;CACJ"}
@@ -0,0 +1,7 @@
1
+ import { Spider } from './Spider.js';
2
+ export declare class SpiderFileAnalyzer {
3
+ pathname: string;
4
+ constructor(pathname: string);
5
+ getSpiders(): Spider[];
6
+ }
7
+ //# sourceMappingURL=SpiderFileAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpiderFileAnalyzer.d.ts","sourceRoot":"","sources":["../../../../src/lib/projects/scrapy/SpiderFileAnalyzer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,qBAAa,kBAAkB;IAC3B,QAAQ,EAAE,MAAM,CAAC;gBAEL,QAAQ,EAAE,MAAM;IAI5B,UAAU;CAcb"}
@@ -0,0 +1,25 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { Spider } from './Spider.js';
3
+ export class SpiderFileAnalyzer {
4
+ constructor(pathname) {
5
+ Object.defineProperty(this, "pathname", {
6
+ enumerable: true,
7
+ configurable: true,
8
+ writable: true,
9
+ value: void 0
10
+ });
11
+ this.pathname = pathname;
12
+ }
13
+ getSpiders() {
14
+ const file = readFileSync(this.pathname, 'utf8');
15
+ const regex = /class\s+(\w+)/g;
16
+ const spiders = [];
17
+ let match = regex.exec(file);
18
+ while (match) {
19
+ spiders.push(new Spider({ class_name: match[1], pathname: this.pathname }));
20
+ match = regex.exec(file);
21
+ }
22
+ return spiders;
23
+ }
24
+ }
25
+ //# sourceMappingURL=SpiderFileAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpiderFileAnalyzer.js","sourceRoot":"","sources":["../../../../src/lib/projects/scrapy/SpiderFileAnalyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,OAAO,kBAAkB;IAG3B,YAAY,QAAgB;QAF5B;;;;;WAAiB;QAGb,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,UAAU;QACN,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEjD,MAAM,KAAK,GAAG,gBAAgB,CAAC;QAC/B,MAAM,OAAO,GAAG,EAAE,CAAC;QAEnB,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC5E,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ"}
@@ -0,0 +1,4 @@
1
+ export declare function wrapScrapyProject({ projectPath }: {
2
+ projectPath?: string;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=wrapScrapyProject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapScrapyProject.d.ts","sourceRoot":"","sources":["../../../../src/lib/projects/scrapy/wrapScrapyProject.ts"],"names":[],"mappings":"AA2DA,wBAAsB,iBAAiB,CAAC,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;CAAE,iBAgFjF"}
@@ -1,26 +1,23 @@
1
- const fs = require('fs');
2
- const path = require('path');
3
-
4
- const { fetchManifest, wrapperManifestUrl } = require('@apify/actor-templates');
5
- const { walk } = require('@root/walk');
6
- const ConfigParser = require('configparser');
7
- const handlebars = require('handlebars');
8
- const inquirer = require('inquirer');
9
-
10
- const { ScrapyProjectAnalyzer } = require('./ScrapyProjectAnalyzer');
11
- const outputs = require('../outputs');
12
- const { downloadAndUnzip, sanitizeActorName } = require('../utils');
13
-
1
+ import { appendFileSync, copyFileSync, createWriteStream, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
2
+ import { basename, join, relative, sep } from 'node:path';
3
+ import { fetchManifest, wrapperManifestUrl } from '@apify/actor-templates';
4
+ import rootWalk from '@root/walk';
5
+ import ConfigParser from 'configparser';
6
+ import Handlebars from 'handlebars';
7
+ import inquirer from 'inquirer';
8
+ import { ScrapyProjectAnalyzer } from './ScrapyProjectAnalyzer.js';
9
+ import { info, success } from '../../outputs.js';
10
+ import { downloadAndUnzip, sanitizeActorName } from '../../utils.js';
14
11
  /**
15
12
  * Files that should be concatenated instead of copied (and overwritten).
16
13
  */
17
14
  const concatenableFiles = ['.dockerignore', '.gitignore'];
18
-
19
15
  async function merge(fromPath, toPath, options = { bindings: {} }) {
20
- await walk(fromPath, async (err, pathname, dirent) => {
21
- if (pathname === fromPath) return;
22
- const relPath = path.relative(fromPath, pathname);
23
- const toRelPath = relPath.split(path.sep).map((part) => {
16
+ await rootWalk.walk(fromPath, async (_err, pathname, dirent) => {
17
+ if (pathname === fromPath)
18
+ return;
19
+ const relPath = relative(fromPath, pathname);
20
+ const toRelPath = relPath.split(sep).map((part) => {
24
21
  if (part.startsWith('{') && part.endsWith('}')) {
25
22
  part = part.replace('{', '').replace('}', '');
26
23
  const binding = options.bindings[part];
@@ -30,43 +27,34 @@ async function merge(fromPath, toPath, options = { bindings: {} }) {
30
27
  return binding;
31
28
  }
32
29
  return part;
33
- }).join(path.sep);
34
-
35
- const targetPath = path.join(toPath, toRelPath);
36
-
30
+ }).join(sep);
31
+ const targetPath = join(toPath, toRelPath);
37
32
  if (dirent.isDirectory()) {
38
- if (!fs.existsSync(targetPath)) {
39
- fs.mkdirSync(targetPath);
33
+ if (!existsSync(targetPath)) {
34
+ mkdirSync(targetPath);
40
35
  }
41
36
  return merge(pathname, targetPath);
42
37
  }
43
-
44
38
  if (relPath.includes('.template')) {
45
- fs.writeFileSync(
46
- path.join(
47
- toPath,
48
- toRelPath.replace('.template', ''),
49
- ),
50
- handlebars.compile(fs.readFileSync(pathname, 'utf8'))(options.bindings));
51
- } else if (fs.existsSync(targetPath) && concatenableFiles.includes(path.basename(toRelPath))) {
52
- fs.appendFileSync(targetPath, fs.readFileSync(pathname));
53
- } else {
54
- fs.copyFileSync(pathname, targetPath);
39
+ writeFileSync(join(toPath, toRelPath.replace('.template', '')), Handlebars.compile(readFileSync(pathname, 'utf8'))(options.bindings));
40
+ }
41
+ else if (existsSync(targetPath) && concatenableFiles.includes(basename(toRelPath))) {
42
+ appendFileSync(targetPath, readFileSync(pathname));
43
+ }
44
+ else {
45
+ copyFileSync(pathname, targetPath);
55
46
  }
56
47
  });
57
48
  }
58
-
59
- async function wrapScrapyProject({ projectPath }) {
60
- if (!projectPath) projectPath = '.';
61
-
49
+ export async function wrapScrapyProject({ projectPath }) {
50
+ if (!projectPath) {
51
+ projectPath = '.';
52
+ }
62
53
  const analyzer = new ScrapyProjectAnalyzer(projectPath);
63
-
64
54
  if (analyzer.configuration.hasSection('apify')) {
65
55
  throw new Error(`The Scrapy project configuration already contains Apify settings. Are you sure you didn't already wrap this project?`);
66
56
  }
67
-
68
57
  await analyzer.init();
69
-
70
58
  const { spiderIndex } = await inquirer.prompt([
71
59
  {
72
60
  type: 'list',
@@ -78,13 +66,10 @@ async function wrapScrapyProject({ projectPath }) {
78
66
  })),
79
67
  },
80
68
  ]);
81
-
82
69
  function translatePathToRelativeModuleName(pathname) {
83
- const relPath = path.relative(projectPath, pathname);
84
-
85
- return `.${relPath.split(path.sep).slice(1).join('.').replace('.py', '')}`;
70
+ const relPath = relative(projectPath, pathname);
71
+ return `.${relPath.split(sep).slice(1).join('.').replace('.py', '')}`;
86
72
  }
87
-
88
73
  const templateBindings = {
89
74
  botName: sanitizeActorName(analyzer.settings.BOT_NAME),
90
75
  scrapy_settings_module: analyzer.configuration.get('settings', 'default'),
@@ -93,37 +78,24 @@ async function wrapScrapyProject({ projectPath }) {
93
78
  spider_module_name: `${translatePathToRelativeModuleName(analyzer.getAvailableSpiders()[spiderIndex].pathname)}`,
94
79
  projectFolder: analyzer.settings.BOT_NAME,
95
80
  };
96
-
97
81
  const manifest = await fetchManifest(wrapperManifestUrl);
98
-
99
- outputs.info('Downloading the latest Scrapy wrapper template...');
100
-
82
+ info('Downloading the latest Scrapy wrapper template...');
101
83
  const { archiveUrl } = manifest.templates.find(({ id }) => id === 'python-scrapy');
102
- const templatePath = path.join(__dirname, 'templates', 'python-scrapy');
103
-
104
- if (fs.existsSync(templatePath)) fs.rmSync(templatePath, { recursive: true });
105
-
84
+ const templatePath = join(__dirname, 'templates', 'python-scrapy');
85
+ if (existsSync(templatePath))
86
+ rmSync(templatePath, { recursive: true });
106
87
  await downloadAndUnzip({
107
88
  url: archiveUrl,
108
89
  pathTo: templatePath,
109
90
  });
110
-
111
- outputs.info('Wrapping the Scrapy project...');
112
-
113
- merge(
114
- path.join(__dirname, 'templates', 'python-scrapy'),
115
- projectPath,
116
- {
117
- bindings: templateBindings,
118
- },
119
- );
120
-
91
+ info('Wrapping the Scrapy project...');
92
+ await merge(join(__dirname, 'templates', 'python-scrapy'), projectPath, {
93
+ bindings: templateBindings,
94
+ });
121
95
  const apifyConf = new ConfigParser();
122
96
  apifyConf.addSection('apify');
123
97
  apifyConf.set('apify', 'mainpy_location', analyzer.settings.BOT_NAME);
124
-
125
- const s = fs.createWriteStream(path.join(projectPath, 'scrapy.cfg'), { flags: 'a' });
126
-
98
+ const s = createWriteStream(join(projectPath, 'scrapy.cfg'), { flags: 'a' });
127
99
  await new Promise((r) => {
128
100
  s.on('open', (fd) => {
129
101
  s.write('\n', () => {
@@ -132,8 +104,6 @@ async function wrapScrapyProject({ projectPath }) {
132
104
  });
133
105
  });
134
106
  });
135
-
136
- outputs.success('The Scrapy project has been wrapped successfully.');
107
+ success('The Scrapy project has been wrapped successfully.');
137
108
  }
138
-
139
- module.exports = { wrapScrapyProject };
109
+ //# sourceMappingURL=wrapScrapyProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapScrapyProject.js","sourceRoot":"","sources":["../../../../src/lib/projects/scrapy/wrapScrapyProject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const CRAWLEE_PACKAGES: string[];
2
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/lib/projects/shared.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,UAW5B,CAAC"}
@@ -0,0 +1,13 @@
1
+ export const CRAWLEE_PACKAGES = [
2
+ 'crawlee',
3
+ '@crawlee/core',
4
+ '@crawlee/puppeteer',
5
+ '@crawlee/playwright',
6
+ '@crawlee/cheerio',
7
+ '@crawlee/jsdom',
8
+ '@crawlee/linkedom',
9
+ '@crawlee/http',
10
+ '@crawlee/browser',
11
+ '@crawlee/basic',
12
+ ];
13
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/lib/projects/shared.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,SAAS;IACT,eAAe;IACf,oBAAoB;IACpB,qBAAqB;IACrB,kBAAkB;IAClB,gBAAgB;IAChB,mBAAmB;IACnB,eAAe;IACf,kBAAkB;IAClB,gBAAgB;CACnB,CAAC"}
@@ -0,0 +1,22 @@
1
+ export declare const getSecretsFile: () => Record<string, string>;
2
+ export declare const addSecret: (name: string, value: string) => Record<string, string>;
3
+ export declare const removeSecret: (name: string) => void;
4
+ /**
5
+ * Replaces secure values in env with proper values from local secrets file.
6
+ * @param env
7
+ * @param secrets - Object with secrets, if not set, will be load from secrets file.
8
+ */
9
+ export declare const replaceSecretsValue: (env: Record<string, string>, secrets?: Record<string, string>) => {};
10
+ interface EnvVar {
11
+ name: string;
12
+ value: string;
13
+ isSecret?: boolean;
14
+ }
15
+ /**
16
+ * Transform env to envVars format attribute, which uses Apify API
17
+ * It replaces secrets to values from secrets file.
18
+ * @param secrets - Object with secrets, if not set, will be load from secrets file.
19
+ */
20
+ export declare const transformEnvToEnvVars: (env: Record<string, string>, secrets?: Record<string, string>) => EnvVar[];
21
+ export {};
22
+ //# sourceMappingURL=secrets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,cAAc,8BAM1B,CAAC;AAQF,eAAO,MAAM,SAAS,SAAU,MAAM,SAAS,MAAM,2BAapD,CAAC;AAEF,eAAO,MAAM,YAAY,SAAU,MAAM,SAKxC,CAAC;AAMF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAAS,OAAO,MAAM,EAAE,MAAM,CAAC,YAAY,OAAO,MAAM,EAAE,MAAM,CAAC,OAkBhG,CAAC;AAEF,UAAU,MAAM;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;EAIE;AACF,eAAO,MAAM,qBAAqB,QAAS,OAAO,MAAM,EAAE,MAAM,CAAC,YAAY,OAAO,MAAM,EAAE,MAAM,CAAC,aAuBlG,CAAC"}
@@ -1,84 +1,81 @@
1
- const loadJson = require('load-json-file');
2
- const _ = require('underscore');
3
- const writeJson = require('write-json-file');
4
-
5
- const { SECRETS_FILE_PATH } = require('./consts');
6
- const { warning } = require('./outputs');
7
-
1
+ import { loadJsonFileSync } from 'load-json-file';
2
+ import _ from 'underscore';
3
+ import { writeJsonFileSync } from 'write-json-file';
4
+ import { SECRETS_FILE_PATH } from './consts.js';
5
+ import { warning } from './outputs.js';
6
+ import { ensureApifyDirectory } from './utils.js';
8
7
  const SECRET_KEY_PREFIX = '@';
9
8
  // TODO: Moved to shared
10
9
  const MAX_ENV_VAR_NAME_LENGTH = 100;
11
10
  const MAX_ENV_VAR_VALUE_LENGTH = 50000;
12
-
13
- const getSecretsFile = () => {
11
+ export const getSecretsFile = () => {
14
12
  try {
15
- return loadJson.sync(SECRETS_FILE_PATH) || {};
16
- } catch (e) {
13
+ return loadJsonFileSync(SECRETS_FILE_PATH()) || {};
14
+ }
15
+ catch (e) {
17
16
  return {};
18
17
  }
19
18
  };
20
-
21
19
  const writeSecretsFile = (secrets) => {
22
- writeJson.sync(SECRETS_FILE_PATH, secrets);
20
+ ensureApifyDirectory(SECRETS_FILE_PATH());
21
+ writeJsonFileSync(SECRETS_FILE_PATH(), secrets);
23
22
  return secrets;
24
23
  };
25
-
26
- const addSecret = (name, value) => {
24
+ export const addSecret = (name, value) => {
27
25
  const secrets = getSecretsFile();
28
-
29
- if (secrets[name]) throw new Error(`Secret with name ${name} already exists. Call "apify secrets:rm ${name}" to remove it.`);
26
+ if (secrets[name])
27
+ throw new Error(`Secret with name ${name} already exists. Call "apify secrets:rm ${name}" to remove it.`);
30
28
  if (!_.isString(name) || name.length > MAX_ENV_VAR_NAME_LENGTH) {
31
29
  throw new Error(`Secret name has to be string with maximum length ${MAX_ENV_VAR_NAME_LENGTH}.`);
32
30
  }
33
31
  if (!_.isString(value) || value.length > MAX_ENV_VAR_VALUE_LENGTH) {
34
32
  throw new Error(`Secret value has to be string with maximum length ${MAX_ENV_VAR_VALUE_LENGTH}.`);
35
33
  }
36
-
37
34
  secrets[name] = value;
38
35
  return writeSecretsFile(secrets);
39
36
  };
40
-
41
- const removeSecret = (name) => {
37
+ export const removeSecret = (name) => {
42
38
  const secrets = getSecretsFile();
43
- if (!secrets[name]) throw new Error(`Secret with name ${name} doesn't exist.`);
39
+ if (!secrets[name])
40
+ throw new Error(`Secret with name ${name} doesn't exist.`);
44
41
  delete secrets[name];
45
42
  writeSecretsFile(secrets);
46
43
  };
47
-
48
44
  const isSecretKey = (envValue) => {
49
45
  return new RegExp(`^${SECRET_KEY_PREFIX}.{1}`).test(envValue);
50
46
  };
51
-
52
47
  /**
53
48
  * Replaces secure values in env with proper values from local secrets file.
54
49
  * @param env
55
50
  * @param secrets - Object with secrets, if not set, will be load from secrets file.
56
51
  */
57
- const replaceSecretsValue = (env, secrets) => {
52
+ export const replaceSecretsValue = (env, secrets) => {
58
53
  secrets = secrets || getSecretsFile();
59
54
  const updatedEnv = {};
60
55
  Object.keys(env).forEach((key) => {
61
56
  if (isSecretKey(env[key])) {
62
57
  const secretKey = env[key].replace(new RegExp(`^${SECRET_KEY_PREFIX}`), '');
63
58
  if (secrets[secretKey]) {
59
+ // @ts-expect-error - we are replacing the value
64
60
  updatedEnv[key] = secrets[secretKey];
65
- } else {
61
+ }
62
+ else {
66
63
  warning(`Value for ${secretKey} not found in local secrets. Set it by calling "apify secrets:add ${secretKey} [SECRET_VALUE]"`);
67
64
  }
68
- } else {
65
+ }
66
+ else {
67
+ // @ts-expect-error - we are replacing the value
69
68
  updatedEnv[key] = env[key];
70
69
  }
71
70
  });
72
71
  return updatedEnv;
73
72
  };
74
-
75
73
  /**
76
74
  * Transform env to envVars format attribute, which uses Apify API
77
75
  * It replaces secrets to values from secrets file.
78
- * @param env
79
76
  * @param secrets - Object with secrets, if not set, will be load from secrets file.
80
- */
81
- const transformEnvToEnvVars = (env, secrets) => {
77
+ */
78
+ export const transformEnvToEnvVars = (env, secrets) => {
82
79
  secrets = secrets || getSecretsFile();
83
80
  const envVars = [];
84
81
  Object.keys(env).forEach((key) => {
@@ -90,10 +87,12 @@ const transformEnvToEnvVars = (env, secrets) => {
90
87
  value: secrets[secretKey],
91
88
  isSecret: true,
92
89
  });
93
- } else {
90
+ }
91
+ else {
94
92
  warning(`Value for ${secretKey} not found in local secrets. Set it by calling "apify secrets:add ${secretKey} [SECRET_VALUE]"`);
95
93
  }
96
- } else {
94
+ }
95
+ else {
97
96
  envVars.push({
98
97
  name: key,
99
98
  value: env[key],
@@ -102,11 +101,4 @@ const transformEnvToEnvVars = (env, secrets) => {
102
101
  });
103
102
  return envVars;
104
103
  };
105
-
106
- module.exports = {
107
- addSecret,
108
- removeSecret,
109
- replaceSecretsValue,
110
- getSecretsFile,
111
- transformEnvToEnvVars,
112
- };
104
+ //# sourceMappingURL=secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import Mixpanel from 'mixpanel';
2
+ export declare const mixpanel: Mixpanel.Mixpanel;
3
+ /**
4
+ * Returns telemetry distinctId for current local environment or creates new one.
5
+ *
6
+ */
7
+ export declare const getOrCreateLocalDistinctId: () => Promise<string>;
8
+ export declare const regenerateLocalDistinctId: () => void;
9
+ export declare const isTelemetryEnabled: boolean;
10
+ /**
11
+ * Tracks telemetry event if telemetry is enabled.
12
+ */
13
+ export declare const maybeTrackTelemetry: ({ eventName, eventData }: {
14
+ eventName: string;
15
+ eventData: Record<string, unknown>;
16
+ }) => Promise<void>;
17
+ /**
18
+ * Uses Apify identity with local distinctId.
19
+ */
20
+ export declare const useApifyIdentity: (userId: string) => Promise<void>;
21
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/lib/telemetry.ts"],"names":[],"mappings":"AAIA,OAAO,QAA0B,MAAM,UAAU,CAAC;AAOlD,eAAO,MAAM,QAAQ,mBAAsD,CAAC;AAa5E;;;GAGG;AACH,eAAO,MAAM,0BAA0B,uBAgBtC,CAAC;AAEF,eAAO,MAAM,yBAAyB,YAOrC,CAAC;AAEF,eAAO,MAAM,kBAAkB,SACwC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,mBAAmB;eAAiD,MAAM;eAAa,OAAO,MAAM,EAAE,OAAO,CAAC;mBAY1H,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,WAAkB,MAAM,kBAgBpD,CAAC"}
@@ -0,0 +1,87 @@
1
+ import { promisify } from 'node:util';
2
+ import { cryptoRandomObjectId } from '@apify/utilities';
3
+ import { loadJsonFile } from 'load-json-file';
4
+ import Mixpanel from 'mixpanel';
5
+ import { writeJsonFile, writeJsonFileSync } from 'write-json-file';
6
+ import { MIXPANEL_TOKEN, TELEMETRY_FILE_PATH } from './consts.js';
7
+ import { info } from './outputs.js';
8
+ import { ensureApifyDirectory, getLocalUserInfo } from './utils.js';
9
+ export const mixpanel = Mixpanel.init(MIXPANEL_TOKEN, { keepAlive: false });
10
+ const TELEMETRY_WARNING_TEXT = 'Apify collects telemetry data about general usage of Apify CLI to help us improve the product. '
11
+ + 'This feature is enabled by default, and you can disable it by setting the "APIFY_CLI_DISABLE_TELEMETRY" environment variable to "1". '
12
+ + 'You can find more information about our telemetry in https://docs.apify.com/cli/docs/telemetry.';
13
+ const promisifiedTrack = promisify(mixpanel.track.bind(mixpanel));
14
+ /**
15
+ * Returns distinctId for current local environment.
16
+ * Use CLI prefix to distinguish between id generated by CLI.
17
+ */
18
+ const createLocalDistinctId = () => `CLI:${cryptoRandomObjectId()}`;
19
+ /**
20
+ * Returns telemetry distinctId for current local environment or creates new one.
21
+ *
22
+ */
23
+ export const getOrCreateLocalDistinctId = async () => {
24
+ try {
25
+ const telemetry = await loadJsonFile(TELEMETRY_FILE_PATH());
26
+ return telemetry.distinctId;
27
+ }
28
+ catch (e) {
29
+ const userInfo = await getLocalUserInfo();
30
+ const distinctId = userInfo.id || createLocalDistinctId();
31
+ // This first time we are tracking telemetry, so we want to notify user about it.
32
+ info(TELEMETRY_WARNING_TEXT);
33
+ ensureApifyDirectory(TELEMETRY_FILE_PATH());
34
+ await writeJsonFile(TELEMETRY_FILE_PATH(), { distinctId });
35
+ return distinctId;
36
+ }
37
+ };
38
+ export const regenerateLocalDistinctId = () => {
39
+ try {
40
+ ensureApifyDirectory(TELEMETRY_FILE_PATH());
41
+ writeJsonFileSync(TELEMETRY_FILE_PATH(), { distinctId: createLocalDistinctId() });
42
+ }
43
+ catch {
44
+ // Ignore errors
45
+ }
46
+ };
47
+ export const isTelemetryEnabled = !process.env.APIFY_CLI_DISABLE_TELEMETRY
48
+ || ['false', '0'].includes(process.env.APIFY_CLI_DISABLE_TELEMETRY);
49
+ /**
50
+ * Tracks telemetry event if telemetry is enabled.
51
+ */
52
+ export const maybeTrackTelemetry = async ({ eventName, eventData }) => {
53
+ if (!isTelemetryEnabled)
54
+ return;
55
+ try {
56
+ const distinctId = getOrCreateLocalDistinctId();
57
+ await promisifiedTrack(eventName, {
58
+ distinct_id: distinctId,
59
+ ...eventData,
60
+ });
61
+ }
62
+ catch (e) {
63
+ // Ignore errors
64
+ }
65
+ };
66
+ /**
67
+ * Uses Apify identity with local distinctId.
68
+ */
69
+ export const useApifyIdentity = async (userId) => {
70
+ if (!isTelemetryEnabled)
71
+ return;
72
+ try {
73
+ const distinctId = getOrCreateLocalDistinctId();
74
+ ensureApifyDirectory(TELEMETRY_FILE_PATH());
75
+ await writeJsonFile(TELEMETRY_FILE_PATH(), { distinctId: userId });
76
+ await maybeTrackTelemetry({
77
+ eventName: '$create_alias',
78
+ eventData: {
79
+ alias: distinctId,
80
+ },
81
+ });
82
+ }
83
+ catch (e) {
84
+ // Ignore errors
85
+ }
86
+ };
87
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/lib/telemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface AuthJSON {
2
+ token?: string;
3
+ id?: string;
4
+ username?: string;
5
+ email?: string;
6
+ proxy?: {
7
+ password: string;
8
+ };
9
+ organizationOwnerUserId?: string;
10
+ }
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,uBAAuB,CAAC,EAAE,MAAM,CAAC;CACpC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":""}