apify-schema-tools 2.0.1 → 2.0.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/CHANGELOG.md +17 -0
- package/dist/apify-schema-tools.js +8 -2
- package/dist/apify-schema-tools.js.map +1 -1
- package/dist/apify.d.ts +1 -0
- package/dist/apify.d.ts.map +1 -1
- package/dist/apify.js +28 -12
- package/dist/apify.js.map +1 -1
- package/package.json +1 -1
- package/samples/all-defaults/src/generated/input-utils.ts +21 -13
- package/samples/deep-merged-schemas/src/generated/input-utils.ts +22 -14
- package/samples/merged-schemas/src/generated/input-utils.ts +21 -13
- package/samples/package-json-config/src/custom-generated/input-utils.ts +21 -13
- package/src/apify-schema-tools.ts +9 -2
- package/src/apify.ts +38 -16
- package/test/apify-schema-tools.test.ts +1 -1
- package/test/apify.test.ts +72 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.0.3
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- Input utils now include the correct DefaultInputs interface.
|
|
8
|
+
- Dataset path in `actor.json` now is relative to the `actor.json`'s dirname.
|
|
9
|
+
|
|
10
|
+
## 2.0.2
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Input utils now satisfy TypeScript constraints.
|
|
15
|
+
|
|
16
|
+
### Removed
|
|
17
|
+
|
|
18
|
+
- The constant
|
|
19
|
+
|
|
3
20
|
## 2.0.1
|
|
4
21
|
|
|
5
22
|
### Added
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { existsSync } from "node:fs";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { ArgumentDefaultsHelpFormatter, ArgumentParser } from "argparse";
|
|
5
|
-
import { ACTOR_CONFIG_PATH, DATASET_SCHEMA_FIELD, filterValidInputSchemaProperties, generateInputDefaultsTSFileContent, } from "./apify.js";
|
|
5
|
+
import { ACTOR_CONFIG_PATH, DATASET_SCHEMA_FIELD, filterValidInputSchemaProperties, generateInputDefaultsTSFileContent, getPathRelativeToActorConfig, } from "./apify.js";
|
|
6
6
|
import { addCommonCLIArgs, parseConfigurationFromFileOrDefault, writeConfigurationToPackageJson, } from "./configuration.js";
|
|
7
7
|
import { readFile, writeFile } from "./filesystem.js";
|
|
8
8
|
import { compareSchemas, mergeObjectSchemas, readJsonSchema, readJsonSchemaField, writeJsonSchema, writeSchemaToField, } from "./json-schemas.js";
|
|
@@ -66,7 +66,13 @@ function init(args) {
|
|
|
66
66
|
}
|
|
67
67
|
const actorConfig = JSON.parse(readFile(ACTOR_CONFIG_PATH));
|
|
68
68
|
if (actorConfig.storages?.dataset !== args.dataset_schema) {
|
|
69
|
-
writeFile(ACTOR_CONFIG_PATH, JSON.stringify({
|
|
69
|
+
writeFile(ACTOR_CONFIG_PATH, JSON.stringify({
|
|
70
|
+
...actorConfig,
|
|
71
|
+
storages: {
|
|
72
|
+
...actorConfig.storages,
|
|
73
|
+
dataset: getPathRelativeToActorConfig(args.dataset_schema),
|
|
74
|
+
},
|
|
75
|
+
}, null, 4));
|
|
70
76
|
console.log(`Updated ${ACTOR_CONFIG_PATH} to use the dataset schema at ${args.dataset_schema}`);
|
|
71
77
|
}
|
|
72
78
|
if (!existsSync(args.dataset_schema)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apify-schema-tools.js","sourceRoot":"","sources":["../src/apify-schema-tools.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"apify-schema-tools.js","sourceRoot":"","sources":["../src/apify-schema-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/apify.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ObjectSchema } from "./json-schemas.js";
|
|
2
2
|
export declare const ACTOR_CONFIG_PATH = ".actor/actor.json";
|
|
3
|
+
export declare function getPathRelativeToActorConfig(path: string): string;
|
|
3
4
|
export declare function filterValidInputSchemaProperties(schema: ObjectSchema): ObjectSchema;
|
|
4
5
|
/**
|
|
5
6
|
* Generates the content of a TypeScript file that exports a function to fill
|
package/dist/apify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apify.d.ts","sourceRoot":"","sources":["../src/apify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apify.d.ts","sourceRoot":"","sources":["../src/apify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAA+B,MAAM,mBAAmB,CAAC;AAGnF,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjE;AA+CD,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAQnF;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,WAAW,EAAE,YAAY,UAyE3E;AAED,eAAO,MAAM,oBAAoB,WAAW,CAAC"}
|
package/dist/apify.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { dirname, relative } from "node:path";
|
|
1
2
|
import { filterValidSchemaProperties } from "./json-schemas.js";
|
|
2
3
|
import { jsonSchemaToTypeScriptInterface, serializeTypeScriptSchema } from "./typescript.js";
|
|
3
4
|
export const ACTOR_CONFIG_PATH = ".actor/actor.json";
|
|
5
|
+
export function getPathRelativeToActorConfig(path) {
|
|
6
|
+
return `./${relative(dirname(ACTOR_CONFIG_PATH), path)}`;
|
|
7
|
+
}
|
|
4
8
|
const VALID_INPUT_ROOT_KEYS = ["title", "description", "type", "schemaVersion", "properties", "required"];
|
|
5
9
|
const VALID_INPUT_PROPERTY_KEYS = [
|
|
6
10
|
"type",
|
|
@@ -57,16 +61,16 @@ export function generateInputDefaultsTSFileContent(inputSchema) {
|
|
|
57
61
|
defaultValues[property] = definition.default;
|
|
58
62
|
}
|
|
59
63
|
}
|
|
60
|
-
const
|
|
61
|
-
const
|
|
64
|
+
const tsInterface = jsonSchemaToTypeScriptInterface(inputSchema);
|
|
65
|
+
const defaultInterface = {
|
|
62
66
|
isArray: false,
|
|
63
67
|
isRequired: true,
|
|
64
68
|
properties: {},
|
|
65
69
|
};
|
|
66
70
|
const requiredParamsWithoutDefaults = [];
|
|
67
|
-
for (const [key, schema] of Object.entries(
|
|
68
|
-
if (
|
|
69
|
-
|
|
71
|
+
for (const [key, schema] of Object.entries(tsInterface.properties)) {
|
|
72
|
+
if (key in defaultValues) {
|
|
73
|
+
defaultInterface.properties[key] = {
|
|
70
74
|
...schema,
|
|
71
75
|
isRequired: true,
|
|
72
76
|
};
|
|
@@ -75,31 +79,43 @@ export function generateInputDefaultsTSFileContent(inputSchema) {
|
|
|
75
79
|
requiredParamsWithoutDefaults.push(key);
|
|
76
80
|
}
|
|
77
81
|
}
|
|
82
|
+
const areThereDefaults = Object.keys(defaultInterface.properties).length > 0;
|
|
78
83
|
return `\
|
|
79
84
|
import { Actor } from "apify";
|
|
80
85
|
import type { Input } from "./input.js";
|
|
81
86
|
|
|
82
|
-
|
|
87
|
+
${areThereDefaults
|
|
88
|
+
? `\
|
|
89
|
+
interface DefaultInputs ${serializeTypeScriptSchema(defaultInterface)};
|
|
90
|
+
|
|
91
|
+
export type InputWithDefaults = Input & DefaultInputs;
|
|
83
92
|
|
|
84
|
-
export const
|
|
93
|
+
export const DEFAULT_INPUT_VALUES: DefaultInputs = ${JSON.stringify(defaultValues, null, "\t")};`
|
|
94
|
+
: `\
|
|
95
|
+
export type InputWithDefaults = Input;
|
|
85
96
|
|
|
86
|
-
export
|
|
97
|
+
export const DEFAULT_INPUT_VALUES: Record<string, unknown> = {};`}
|
|
98
|
+
|
|
99
|
+
export const REQUIRED_INPUT_FIELDS_WITHOUT_DEFAULT = ${JSON.stringify(requiredParamsWithoutDefaults, null, "\t")};
|
|
87
100
|
|
|
88
101
|
export function getInputWithDefaultValues(input?: Input | null): InputWithDefaults {
|
|
89
102
|
if (Actor.isAtHome()) {
|
|
90
103
|
// The platform is supposed to fill in the default values
|
|
91
104
|
return input as InputWithDefaults;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
? `\
|
|
105
|
+
}${requiredParamsWithoutDefaults.length > 0
|
|
106
|
+
? `
|
|
95
107
|
if (!input) {
|
|
96
108
|
throw new Error(\`Input is required, because the following fields are required: $\{REQUIRED_INPUT_FIELDS_WITHOUT_DEFAULT.join(", ")\}\`);
|
|
97
109
|
}`
|
|
98
110
|
: ""}
|
|
111
|
+
${areThereDefaults
|
|
112
|
+
? `\
|
|
99
113
|
return {
|
|
100
114
|
...DEFAULT_INPUT_VALUES,
|
|
101
115
|
...(input ?? {} as Input),
|
|
102
|
-
}
|
|
116
|
+
};`
|
|
117
|
+
: `\
|
|
118
|
+
return input ?? {} as Input;`}
|
|
103
119
|
}
|
|
104
120
|
`;
|
|
105
121
|
}
|
package/dist/apify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apify.js","sourceRoot":"","sources":["../src/apify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAA4B,+BAA+B,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAEvH,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAErD,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAE1G,MAAM,yBAAyB,GAAG;IACjC,MAAM;IACN,OAAO;IACP,aAAa;IACb,SAAS;IACT,SAAS;IACT,SAAS;IACT,gBAAgB;IAChB,oBAAoB;CACpB,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAEvF,MAAM,iCAAiC,GAA6B;IACnE,MAAM,EAAE;QACP,QAAQ;QACR,SAAS;QACT,WAAW;QACX,WAAW;QACX,MAAM;QACN,YAAY;QACZ,UAAU;QACV,UAAU;QACV,UAAU;QACV,cAAc;KACd;IACD,OAAO,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,kBAAkB,EAAE,UAAU,CAAC;IACnE,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;IAC7D,MAAM,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,CAAC;IAC9F,KAAK,EAAE;QACN,QAAQ;QACR,gBAAgB;QAChB,kBAAkB;QAClB,YAAY;QACZ,cAAc;QACd,UAAU;QACV,UAAU;QACV,aAAa;QACb,UAAU;QACV,cAAc;KACd;CACD,CAAC;AAEF,MAAM,UAAU,gCAAgC,CAAC,MAAoB;IACpE,OAAO,2BAA2B,CACjC,MAAM,EACN,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,iCAAiC,CACjC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kCAAkC,CAAC,WAAyB;IAC3E,MAAM,aAAa,GAA4B,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"apify.js","sourceRoot":"","sources":["../src/apify.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -7,19 +7,13 @@
|
|
|
7
7
|
import { Actor } from "apify";
|
|
8
8
|
import type { Input } from "./input.js";
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
debugMode: false,
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export const REQUIRED_INPUT_FIELDS_WITHOUT_DEFAULT = ["searchTerm"];
|
|
21
|
-
|
|
22
|
-
export type InputWithDefaults = Input & {
|
|
10
|
+
interface DefaultInputs {
|
|
11
|
+
/**
|
|
12
|
+
* List of URLs to scrape
|
|
13
|
+
*/
|
|
14
|
+
startUrls: {
|
|
15
|
+
url?: string;
|
|
16
|
+
}[];
|
|
23
17
|
/**
|
|
24
18
|
* List of categories to filter results
|
|
25
19
|
*/
|
|
@@ -41,8 +35,22 @@ export type InputWithDefaults = Input & {
|
|
|
41
35
|
* Enable debug logging
|
|
42
36
|
*/
|
|
43
37
|
debugMode: boolean;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type InputWithDefaults = Input & DefaultInputs;
|
|
41
|
+
|
|
42
|
+
export const DEFAULT_INPUT_VALUES: DefaultInputs = {
|
|
43
|
+
startUrls: [],
|
|
44
|
+
categories: [],
|
|
45
|
+
maxPages: 10,
|
|
46
|
+
proxy: {
|
|
47
|
+
useApifyProxy: true,
|
|
48
|
+
},
|
|
49
|
+
debugMode: false,
|
|
44
50
|
};
|
|
45
51
|
|
|
52
|
+
export const REQUIRED_INPUT_FIELDS_WITHOUT_DEFAULT = ["searchTerm"];
|
|
53
|
+
|
|
46
54
|
export function getInputWithDefaultValues(input?: Input | null): InputWithDefaults {
|
|
47
55
|
if (Actor.isAtHome()) {
|
|
48
56
|
// The platform is supposed to fill in the default values
|
|
@@ -7,20 +7,13 @@
|
|
|
7
7
|
import { Actor } from "apify";
|
|
8
8
|
import type { Input } from "./input.js";
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
maxRetries: 3,
|
|
18
|
-
debugMode: false,
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export const REQUIRED_INPUT_FIELDS_WITHOUT_DEFAULT = ["searchTerm"];
|
|
22
|
-
|
|
23
|
-
export type InputWithDefaults = Input & {
|
|
10
|
+
interface DefaultInputs {
|
|
11
|
+
/**
|
|
12
|
+
* List of URLs to scrape
|
|
13
|
+
*/
|
|
14
|
+
startUrls: {
|
|
15
|
+
url?: string;
|
|
16
|
+
}[];
|
|
24
17
|
/**
|
|
25
18
|
* List of categories to filter results
|
|
26
19
|
*/
|
|
@@ -47,8 +40,23 @@ export type InputWithDefaults = Input & {
|
|
|
47
40
|
* Enable debug logging
|
|
48
41
|
*/
|
|
49
42
|
debugMode: boolean;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export type InputWithDefaults = Input & DefaultInputs;
|
|
46
|
+
|
|
47
|
+
export const DEFAULT_INPUT_VALUES: DefaultInputs = {
|
|
48
|
+
startUrls: [],
|
|
49
|
+
categories: [],
|
|
50
|
+
maxPages: 10,
|
|
51
|
+
proxy: {
|
|
52
|
+
useApifyProxy: true,
|
|
53
|
+
},
|
|
54
|
+
maxRetries: 3,
|
|
55
|
+
debugMode: false,
|
|
50
56
|
};
|
|
51
57
|
|
|
58
|
+
export const REQUIRED_INPUT_FIELDS_WITHOUT_DEFAULT = ["searchTerm"];
|
|
59
|
+
|
|
52
60
|
export function getInputWithDefaultValues(input?: Input | null): InputWithDefaults {
|
|
53
61
|
if (Actor.isAtHome()) {
|
|
54
62
|
// The platform is supposed to fill in the default values
|
|
@@ -7,19 +7,13 @@
|
|
|
7
7
|
import { Actor } from "apify";
|
|
8
8
|
import type { Input } from "./input.js";
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
debugMode: false,
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export const REQUIRED_INPUT_FIELDS_WITHOUT_DEFAULT = ["searchTerm"];
|
|
21
|
-
|
|
22
|
-
export type InputWithDefaults = Input & {
|
|
10
|
+
interface DefaultInputs {
|
|
11
|
+
/**
|
|
12
|
+
* List of URLs to scrape
|
|
13
|
+
*/
|
|
14
|
+
startUrls: {
|
|
15
|
+
url?: string;
|
|
16
|
+
}[];
|
|
23
17
|
/**
|
|
24
18
|
* Maximum number of pages to scrape
|
|
25
19
|
*/
|
|
@@ -38,8 +32,22 @@ export type InputWithDefaults = Input & {
|
|
|
38
32
|
* Enable debug logging
|
|
39
33
|
*/
|
|
40
34
|
debugMode: boolean;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export type InputWithDefaults = Input & DefaultInputs;
|
|
38
|
+
|
|
39
|
+
export const DEFAULT_INPUT_VALUES: DefaultInputs = {
|
|
40
|
+
startUrls: [],
|
|
41
|
+
maxPages: 10,
|
|
42
|
+
proxy: {
|
|
43
|
+
useApifyProxy: true,
|
|
44
|
+
},
|
|
45
|
+
maxRetries: 3,
|
|
46
|
+
debugMode: false,
|
|
41
47
|
};
|
|
42
48
|
|
|
49
|
+
export const REQUIRED_INPUT_FIELDS_WITHOUT_DEFAULT = ["searchTerm"];
|
|
50
|
+
|
|
43
51
|
export function getInputWithDefaultValues(input?: Input | null): InputWithDefaults {
|
|
44
52
|
if (Actor.isAtHome()) {
|
|
45
53
|
// The platform is supposed to fill in the default values
|
|
@@ -7,19 +7,13 @@
|
|
|
7
7
|
import { Actor } from "apify";
|
|
8
8
|
import type { Input } from "./input.js";
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
debugMode: false,
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export const REQUIRED_INPUT_FIELDS_WITHOUT_DEFAULT = ["searchTerm"];
|
|
21
|
-
|
|
22
|
-
export type InputWithDefaults = Input & {
|
|
10
|
+
interface DefaultInputs {
|
|
11
|
+
/**
|
|
12
|
+
* List of URLs to scrape
|
|
13
|
+
*/
|
|
14
|
+
startUrls: {
|
|
15
|
+
url?: string;
|
|
16
|
+
}[];
|
|
23
17
|
/**
|
|
24
18
|
* List of categories to filter results
|
|
25
19
|
*/
|
|
@@ -41,8 +35,22 @@ export type InputWithDefaults = Input & {
|
|
|
41
35
|
* Enable debug logging
|
|
42
36
|
*/
|
|
43
37
|
debugMode: boolean;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type InputWithDefaults = Input & DefaultInputs;
|
|
41
|
+
|
|
42
|
+
export const DEFAULT_INPUT_VALUES: DefaultInputs = {
|
|
43
|
+
startUrls: [],
|
|
44
|
+
categories: [],
|
|
45
|
+
maxPages: 10,
|
|
46
|
+
proxy: {
|
|
47
|
+
useApifyProxy: true,
|
|
48
|
+
},
|
|
49
|
+
debugMode: false,
|
|
44
50
|
};
|
|
45
51
|
|
|
52
|
+
export const REQUIRED_INPUT_FIELDS_WITHOUT_DEFAULT = ["searchTerm"];
|
|
53
|
+
|
|
46
54
|
export function getInputWithDefaultValues(input?: Input | null): InputWithDefaults {
|
|
47
55
|
if (Actor.isAtHome()) {
|
|
48
56
|
// The platform is supposed to fill in the default values
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
import { existsSync
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
import { ArgumentDefaultsHelpFormatter, type ArgumentOptions, ArgumentParser } from "argparse";
|
|
6
6
|
import {
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
DATASET_SCHEMA_FIELD,
|
|
9
9
|
filterValidInputSchemaProperties,
|
|
10
10
|
generateInputDefaultsTSFileContent,
|
|
11
|
+
getPathRelativeToActorConfig,
|
|
11
12
|
} from "./apify.js";
|
|
12
13
|
import {
|
|
13
14
|
type CommonCLIArgs,
|
|
@@ -113,7 +114,13 @@ function init(args: InitArgs) {
|
|
|
113
114
|
writeFile(
|
|
114
115
|
ACTOR_CONFIG_PATH,
|
|
115
116
|
JSON.stringify(
|
|
116
|
-
{
|
|
117
|
+
{
|
|
118
|
+
...actorConfig,
|
|
119
|
+
storages: {
|
|
120
|
+
...actorConfig.storages,
|
|
121
|
+
dataset: getPathRelativeToActorConfig(args.dataset_schema),
|
|
122
|
+
},
|
|
123
|
+
},
|
|
117
124
|
null,
|
|
118
125
|
4,
|
|
119
126
|
),
|
package/src/apify.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import { dirname, relative } from "node:path";
|
|
1
2
|
import { type ObjectSchema, filterValidSchemaProperties } from "./json-schemas.js";
|
|
2
3
|
import { type TypeScriptInterface, jsonSchemaToTypeScriptInterface, serializeTypeScriptSchema } from "./typescript.js";
|
|
3
4
|
|
|
4
5
|
export const ACTOR_CONFIG_PATH = ".actor/actor.json";
|
|
5
6
|
|
|
7
|
+
export function getPathRelativeToActorConfig(path: string): string {
|
|
8
|
+
return `./${relative(dirname(ACTOR_CONFIG_PATH), path)}`;
|
|
9
|
+
}
|
|
10
|
+
|
|
6
11
|
const VALID_INPUT_ROOT_KEYS = ["title", "description", "type", "schemaVersion", "properties", "required"];
|
|
7
12
|
|
|
8
13
|
const VALID_INPUT_PROPERTY_KEYS = [
|
|
@@ -65,23 +70,23 @@ export function filterValidInputSchemaProperties(schema: ObjectSchema): ObjectSc
|
|
|
65
70
|
*/
|
|
66
71
|
export function generateInputDefaultsTSFileContent(inputSchema: ObjectSchema) {
|
|
67
72
|
const defaultValues: Record<string, unknown> = {};
|
|
68
|
-
|
|
69
73
|
for (const [property, definition] of Object.entries(inputSchema.properties ?? {})) {
|
|
70
74
|
if ("default" in definition) {
|
|
71
75
|
defaultValues[property] = definition.default;
|
|
72
76
|
}
|
|
73
77
|
}
|
|
74
|
-
const tsInterfaceSchema = jsonSchemaToTypeScriptInterface(inputSchema);
|
|
75
78
|
|
|
76
|
-
const
|
|
79
|
+
const tsInterface = jsonSchemaToTypeScriptInterface(inputSchema);
|
|
80
|
+
|
|
81
|
+
const defaultInterface: TypeScriptInterface = {
|
|
77
82
|
isArray: false,
|
|
78
83
|
isRequired: true,
|
|
79
84
|
properties: {},
|
|
80
85
|
};
|
|
81
86
|
const requiredParamsWithoutDefaults: string[] = [];
|
|
82
|
-
for (const [key, schema] of Object.entries(
|
|
83
|
-
if (
|
|
84
|
-
|
|
87
|
+
for (const [key, schema] of Object.entries(tsInterface.properties)) {
|
|
88
|
+
if (key in defaultValues) {
|
|
89
|
+
defaultInterface.properties[key] = {
|
|
85
90
|
...schema,
|
|
86
91
|
isRequired: true,
|
|
87
92
|
};
|
|
@@ -90,33 +95,50 @@ export function generateInputDefaultsTSFileContent(inputSchema: ObjectSchema) {
|
|
|
90
95
|
}
|
|
91
96
|
}
|
|
92
97
|
|
|
98
|
+
const areThereDefaults = Object.keys(defaultInterface.properties).length > 0;
|
|
99
|
+
|
|
93
100
|
return `\
|
|
94
101
|
import { Actor } from "apify";
|
|
95
102
|
import type { Input } from "./input.js";
|
|
96
103
|
|
|
97
|
-
|
|
104
|
+
${
|
|
105
|
+
areThereDefaults
|
|
106
|
+
? `\
|
|
107
|
+
interface DefaultInputs ${serializeTypeScriptSchema(defaultInterface)};
|
|
98
108
|
|
|
99
|
-
export
|
|
109
|
+
export type InputWithDefaults = Input & DefaultInputs;
|
|
100
110
|
|
|
101
|
-
export
|
|
111
|
+
export const DEFAULT_INPUT_VALUES: DefaultInputs = ${JSON.stringify(defaultValues, null, "\t")};`
|
|
112
|
+
: `\
|
|
113
|
+
export type InputWithDefaults = Input;
|
|
114
|
+
|
|
115
|
+
export const DEFAULT_INPUT_VALUES: Record<string, unknown> = {};`
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export const REQUIRED_INPUT_FIELDS_WITHOUT_DEFAULT = ${JSON.stringify(requiredParamsWithoutDefaults, null, "\t")};
|
|
102
119
|
|
|
103
120
|
export function getInputWithDefaultValues(input?: Input | null): InputWithDefaults {
|
|
104
121
|
if (Actor.isAtHome()) {
|
|
105
122
|
// The platform is supposed to fill in the default values
|
|
106
123
|
return input as InputWithDefaults;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
? `\
|
|
124
|
+
}${
|
|
125
|
+
requiredParamsWithoutDefaults.length > 0
|
|
126
|
+
? `
|
|
111
127
|
if (!input) {
|
|
112
128
|
throw new Error(\`Input is required, because the following fields are required: $\{REQUIRED_INPUT_FIELDS_WITHOUT_DEFAULT.join(", ")\}\`);
|
|
113
129
|
}`
|
|
114
|
-
|
|
115
|
-
}
|
|
130
|
+
: ""
|
|
131
|
+
}
|
|
132
|
+
${
|
|
133
|
+
areThereDefaults
|
|
134
|
+
? `\
|
|
116
135
|
return {
|
|
117
136
|
...DEFAULT_INPUT_VALUES,
|
|
118
137
|
...(input ?? {} as Input),
|
|
119
|
-
}
|
|
138
|
+
};`
|
|
139
|
+
: `\
|
|
140
|
+
return input ?? {} as Input;`
|
|
141
|
+
}
|
|
120
142
|
}
|
|
121
143
|
`;
|
|
122
144
|
}
|
|
@@ -131,7 +131,7 @@ describe("The apify-schema-tools cli", () => {
|
|
|
131
131
|
|
|
132
132
|
// Check that actor config was updated
|
|
133
133
|
const updatedActorConfig = JSON.parse(readFileSync(actorConfigPath, "utf8"));
|
|
134
|
-
expect(updatedActorConfig.storages?.dataset).toBe("
|
|
134
|
+
expect(updatedActorConfig.storages?.dataset).toBe("./dataset_schema.json");
|
|
135
135
|
|
|
136
136
|
// Check that dataset schema file was created
|
|
137
137
|
expect(existsSync(DATASET_SCHEMA_PATH)).toBe(true);
|
package/test/apify.test.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
+
|
|
3
|
+
import { generateInputDefaultsTSFileContent } from "../src/apify.js";
|
|
2
4
|
import type { ObjectSchema } from "../src/json-schemas";
|
|
3
5
|
|
|
4
6
|
describe("Apify utilities", () => {
|
|
5
7
|
describe("generateInputDefaultsTSFileContent", () => {
|
|
6
|
-
it("should generate
|
|
8
|
+
it("should generate the correct content with default values", async () => {
|
|
7
9
|
const inputSchema: ObjectSchema = {
|
|
8
10
|
type: "object",
|
|
9
11
|
properties: {
|
|
@@ -14,15 +16,77 @@ describe("Apify utilities", () => {
|
|
|
14
16
|
required: ["name"],
|
|
15
17
|
};
|
|
16
18
|
|
|
17
|
-
const tsContent =
|
|
18
|
-
|
|
19
|
+
const tsContent = generateInputDefaultsTSFileContent(inputSchema);
|
|
20
|
+
|
|
21
|
+
expect(tsContent).toEqual(
|
|
22
|
+
`import { Actor } from "apify";
|
|
23
|
+
import type { Input } from "./input.js";
|
|
24
|
+
|
|
25
|
+
interface DefaultInputs {
|
|
26
|
+
name: string;
|
|
27
|
+
age: number;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export type InputWithDefaults = Input & DefaultInputs;
|
|
31
|
+
|
|
32
|
+
export const DEFAULT_INPUT_VALUES: DefaultInputs = {
|
|
33
|
+
"name": "John Doe",
|
|
34
|
+
"age": 30
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export const REQUIRED_INPUT_FIELDS_WITHOUT_DEFAULT = [];
|
|
38
|
+
|
|
39
|
+
export function getInputWithDefaultValues(input?: Input | null): InputWithDefaults {
|
|
40
|
+
if (Actor.isAtHome()) {
|
|
41
|
+
// The platform is supposed to fill in the default values
|
|
42
|
+
return input as InputWithDefaults;
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
...DEFAULT_INPUT_VALUES,
|
|
46
|
+
...(input ?? {} as Input),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
`,
|
|
19
50
|
);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it("should generate the correct content without default values", async () => {
|
|
54
|
+
const inputSchema: ObjectSchema = {
|
|
55
|
+
type: "object",
|
|
56
|
+
properties: {
|
|
57
|
+
name: { type: "string" },
|
|
58
|
+
age: { type: "number" },
|
|
59
|
+
email: { type: "string" },
|
|
60
|
+
},
|
|
61
|
+
required: ["name"],
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const tsContent = generateInputDefaultsTSFileContent(inputSchema);
|
|
20
65
|
|
|
21
|
-
expect(tsContent).
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
66
|
+
expect(tsContent).toEqual(
|
|
67
|
+
`import { Actor } from "apify";
|
|
68
|
+
import type { Input } from "./input.js";
|
|
69
|
+
|
|
70
|
+
export type InputWithDefaults = Input;
|
|
71
|
+
|
|
72
|
+
export const DEFAULT_INPUT_VALUES: Record<string, unknown> = {};
|
|
73
|
+
|
|
74
|
+
export const REQUIRED_INPUT_FIELDS_WITHOUT_DEFAULT = [
|
|
75
|
+
"name"
|
|
76
|
+
];
|
|
77
|
+
|
|
78
|
+
export function getInputWithDefaultValues(input?: Input | null): InputWithDefaults {
|
|
79
|
+
if (Actor.isAtHome()) {
|
|
80
|
+
// The platform is supposed to fill in the default values
|
|
81
|
+
return input as InputWithDefaults;
|
|
82
|
+
}
|
|
83
|
+
if (!input) {
|
|
84
|
+
throw new Error(\`Input is required, because the following fields are required: $\{REQUIRED_INPUT_FIELDS_WITHOUT_DEFAULT.join(", ")\}\`);
|
|
85
|
+
}
|
|
86
|
+
return input ?? {} as Input;
|
|
87
|
+
}
|
|
88
|
+
`,
|
|
89
|
+
);
|
|
26
90
|
});
|
|
27
91
|
});
|
|
28
92
|
});
|