@prismatic-io/spectral 10.18.7-preview.1 → 10.18.7-preview.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.
@@ -117,17 +117,13 @@ const runMain = (process) => __awaiter(void 0, void 0, void 0, function* () {
117
117
  console.error("Component is invalid.");
118
118
  process.exit(1);
119
119
  }
120
- const packageJson = (0, fs_extra_1.readJsonSync)(path_1.default.join(__dirname, "../../../package.json"));
120
+ const { version: spectralVersion } = require("../../../package.json");
121
121
  yield (0, index_1.createComponentManifest)({
122
122
  component,
123
123
  dryRun: flags.dry_run.value,
124
124
  skipSignatureVerify: flags.skip_signature_verify.value,
125
125
  packageName: (_a = flags.name.value) !== null && _a !== void 0 ? _a : `@component-manifests/${component.key}`,
126
- dependencies: {
127
- spectral: packageJson.version,
128
- dependencies: packageJson.dependencies,
129
- devDependencies: packageJson.devDependencies,
130
- },
126
+ spectralVersion,
131
127
  verbose: flags.verbose.value,
132
128
  sourceDir: path_1.default.join(__dirname, "templates"),
133
129
  destinationDir: flags.output_dir.value
@@ -1,22 +1,17 @@
1
1
  import type { Component } from "../../serverTypes";
2
2
  import type { ConfigVarResultCollection, Inputs, TriggerPayload, TriggerResult } from "../../types";
3
- export interface PackageDependencies {
4
- spectral: string;
5
- dependencies: Record<string, string>;
6
- devDependencies: Record<string, string>;
7
- }
8
3
  interface CreateStaticFilesProps<TInputs extends Inputs, TActionInputs extends Inputs, TConfigVars extends ConfigVarResultCollection = ConfigVarResultCollection, TPayload extends TriggerPayload = TriggerPayload, TAllowsBranching extends boolean = boolean, TResult extends TriggerResult<TAllowsBranching, TPayload> = TriggerResult<TAllowsBranching, TPayload>> {
9
4
  component: Component<TInputs, TActionInputs, TConfigVars, TPayload, TAllowsBranching, TResult>;
10
5
  dryRun: boolean;
11
6
  signature: string | null;
12
7
  packageName: string;
13
- dependencies: PackageDependencies;
8
+ spectralVersion: string;
14
9
  verbose: boolean;
15
10
  sourceDir: string;
16
11
  destinationDir: string;
17
12
  registry: string | null;
18
13
  }
19
- export declare const createStaticFiles: <TInputs extends Inputs, TActionInputs extends Inputs, TConfigVars extends ConfigVarResultCollection = ConfigVarResultCollection, TPayload extends TriggerPayload = TriggerPayload, TAllowsBranching extends boolean = boolean, TResult extends TriggerResult<TAllowsBranching, TPayload> = TriggerResult<TAllowsBranching, TPayload>>({ component, dryRun, signature, packageName, dependencies, verbose, sourceDir, destinationDir, registry, }: CreateStaticFilesProps<TInputs, TActionInputs, TConfigVars, TPayload, TAllowsBranching, TResult>) => Promise<{
14
+ export declare const createStaticFiles: <TInputs extends Inputs, TActionInputs extends Inputs, TConfigVars extends ConfigVarResultCollection = ConfigVarResultCollection, TPayload extends TriggerPayload = TriggerPayload, TAllowsBranching extends boolean = boolean, TResult extends TriggerResult<TAllowsBranching, TPayload> = TriggerResult<TAllowsBranching, TPayload>>({ component, dryRun, signature, packageName, spectralVersion, verbose, sourceDir, destinationDir, registry, }: CreateStaticFilesProps<TInputs, TActionInputs, TConfigVars, TPayload, TAllowsBranching, TResult>) => Promise<{
20
15
  index: string | void;
21
16
  packageJson: string | void;
22
17
  tsConfig: string | void;
@@ -37,13 +32,13 @@ export declare const renderIndex: ({ component, dryRun, verbose, sourceDir, dest
37
32
  interface RenderPackageJsonProps {
38
33
  dryRun: boolean;
39
34
  packageName: string;
40
- dependencies: PackageDependencies;
35
+ spectralVersion: string;
41
36
  verbose: boolean;
42
37
  sourceDir: string;
43
38
  destinationDir: string;
44
39
  registry: string | null;
45
40
  }
46
- export declare const renderPackageJson: ({ dryRun, packageName, dependencies, verbose, sourceDir, destinationDir, registry, }: RenderPackageJsonProps) => Promise<string | void>;
41
+ export declare const renderPackageJson: ({ dryRun, packageName, spectralVersion, verbose, sourceDir, destinationDir, registry, }: RenderPackageJsonProps) => Promise<string | void>;
47
42
  interface RenderTsConfigProps {
48
43
  dryRun: boolean;
49
44
  verbose: boolean;
@@ -16,7 +16,7 @@ exports.renderReadme = exports.renderTsConfig = exports.renderPackageJson = expo
16
16
  const path_1 = __importDefault(require("path"));
17
17
  const createTemplate_1 = require("../utils/createTemplate");
18
18
  const helpers_1 = require("./helpers");
19
- const createStaticFiles = (_a) => __awaiter(void 0, [_a], void 0, function* ({ component, dryRun, signature, packageName, dependencies, verbose, sourceDir, destinationDir, registry, }) {
19
+ const createStaticFiles = (_a) => __awaiter(void 0, [_a], void 0, function* ({ component, dryRun, signature, packageName, spectralVersion, verbose, sourceDir, destinationDir, registry, }) {
20
20
  var _b, _c, _d, _e;
21
21
  if (verbose) {
22
22
  console.info("Creating static files...");
@@ -34,7 +34,7 @@ const createStaticFiles = (_a) => __awaiter(void 0, [_a], void 0, function* ({ c
34
34
  });
35
35
  const packageJson = yield (0, exports.renderPackageJson)({
36
36
  dryRun,
37
- dependencies,
37
+ spectralVersion,
38
38
  packageName,
39
39
  verbose,
40
40
  sourceDir,
@@ -104,14 +104,13 @@ const renderIndex = (_a) => __awaiter(void 0, [_a], void 0, function* ({ compone
104
104
  });
105
105
  });
106
106
  exports.renderIndex = renderIndex;
107
- const renderPackageJson = (_a) => __awaiter(void 0, [_a], void 0, function* ({ dryRun, packageName, dependencies, verbose, sourceDir, destinationDir, registry, }) {
107
+ const renderPackageJson = (_a) => __awaiter(void 0, [_a], void 0, function* ({ dryRun, packageName, spectralVersion, verbose, sourceDir, destinationDir, registry, }) {
108
108
  return yield (0, createTemplate_1.createTemplate)({
109
109
  source: path_1.default.join(sourceDir, "package.json.ejs"),
110
110
  destination: path_1.default.join(destinationDir, "package.json"),
111
111
  data: {
112
112
  packageName,
113
- spectralVersion: dependencies.spectral,
114
- typescriptVersion: dependencies.devDependencies.typescript,
113
+ spectralVersion,
115
114
  helpers: helpers_1.helpers,
116
115
  registry,
117
116
  },
@@ -1,16 +1,15 @@
1
1
  import type { Component } from "../../serverTypes";
2
2
  import type { ConfigVarResultCollection, Inputs, TriggerPayload, TriggerResult } from "../../types";
3
- import { type PackageDependencies } from "./createStaticFiles";
4
3
  interface CreateComponentManifestProps<TInputs extends Inputs, TActionInputs extends Inputs, TConfigVars extends ConfigVarResultCollection = ConfigVarResultCollection, TPayload extends TriggerPayload = TriggerPayload, TAllowsBranching extends boolean = boolean, TResult extends TriggerResult<TAllowsBranching, TPayload> = TriggerResult<TAllowsBranching, TPayload>> {
5
4
  component: Component<TInputs, TActionInputs, TConfigVars, TPayload, TAllowsBranching, TResult>;
6
5
  dryRun: boolean;
7
6
  skipSignatureVerify: boolean;
8
7
  packageName: string;
9
- dependencies: PackageDependencies;
8
+ spectralVersion: string;
10
9
  verbose: boolean;
11
10
  sourceDir: string;
12
11
  destinationDir: string;
13
12
  registry: string | null;
14
13
  }
15
- export declare const createComponentManifest: <TInputs extends Inputs, TActionInputs extends Inputs, TConfigVars extends ConfigVarResultCollection = ConfigVarResultCollection, TPayload extends TriggerPayload = TriggerPayload, TAllowsBranching extends boolean = boolean, TResult extends TriggerResult<TAllowsBranching, TPayload> = TriggerResult<TAllowsBranching, TPayload>>({ component, dryRun, skipSignatureVerify, packageName, dependencies, verbose, sourceDir, destinationDir, registry, }: CreateComponentManifestProps<TInputs, TActionInputs, TConfigVars, TPayload, TAllowsBranching, TResult>) => Promise<void>;
14
+ export declare const createComponentManifest: <TInputs extends Inputs, TActionInputs extends Inputs, TConfigVars extends ConfigVarResultCollection = ConfigVarResultCollection, TPayload extends TriggerPayload = TriggerPayload, TAllowsBranching extends boolean = boolean, TResult extends TriggerResult<TAllowsBranching, TPayload> = TriggerResult<TAllowsBranching, TPayload>>({ component, dryRun, skipSignatureVerify, packageName, spectralVersion, verbose, sourceDir, destinationDir, registry, }: CreateComponentManifestProps<TInputs, TActionInputs, TConfigVars, TPayload, TAllowsBranching, TResult>) => Promise<void>;
16
15
  export {};
@@ -21,7 +21,7 @@ const createDataSources_1 = require("./createDataSources");
21
21
  const createStaticFiles_1 = require("./createStaticFiles");
22
22
  const createTriggers_1 = require("./createTriggers");
23
23
  const removeComponentManifest_1 = require("./removeComponentManifest");
24
- const createComponentManifest = (_a) => __awaiter(void 0, [_a], void 0, function* ({ component, dryRun, skipSignatureVerify, packageName, dependencies, verbose, sourceDir, destinationDir, registry, }) {
24
+ const createComponentManifest = (_a) => __awaiter(void 0, [_a], void 0, function* ({ component, dryRun, skipSignatureVerify, packageName, spectralVersion, verbose, sourceDir, destinationDir, registry, }) {
25
25
  const signature = yield (0, prism_1.getComponentSignatureWithPrism)({
26
26
  skipSignatureVerify,
27
27
  });
@@ -38,7 +38,7 @@ const createComponentManifest = (_a) => __awaiter(void 0, [_a], void 0, function
38
38
  dryRun,
39
39
  packageName,
40
40
  signature,
41
- dependencies,
41
+ spectralVersion,
42
42
  verbose,
43
43
  sourceDir,
44
44
  destinationDir,
@@ -13,7 +13,7 @@
13
13
  "devDependencies": {
14
14
  "@prismatic-io/spectral": "<%= spectralVersion %>",
15
15
  "rimraf": "5.0.7",
16
- "typescript": "<%= typescriptVersion %>"
16
+ "typescript": "5.5.3"
17
17
  },
18
18
  "peerDependencies": {
19
19
  "@prismatic-io/spectral": ">= <%= spectralVersion %>"
@@ -1,6 +1,12 @@
1
1
  import { type ComponentDefinition, type ComponentHooks, type ConfigVarResultCollection, type ConnectionDefinition, type ConnectionInput, type ConnectionTemplateInputField, type InputFieldDefinition, type Inputs, type OnPremConnectionInput, type TriggerDefinition, type TriggerPayload, type TriggerResult } from "../types";
2
2
  import { type PollingTriggerDefinition } from "../types/PollingTriggerDefinition";
3
3
  import type { Component as ServerComponent, Connection as ServerConnection, Input as ServerInput, Trigger as ServerTrigger } from ".";
4
+ import { type CleanFn } from "./perform";
5
+ /** Auto-generated cleaner for structuredObject/dynamicObject containers.
6
+ * Recursively delegates to each child's clean function. Developers do not
7
+ * declare a top-level clean on these containers — the conversion always
8
+ * supplies one so nested clean functions are applied at runtime. */
9
+ export declare const cleanerFor: (input: InputFieldDefinition) => CleanFn | undefined;
4
10
  export declare const convertInput: (key: string, definition: InputFieldDefinition | OnPremConnectionInput | ConnectionInput) => ServerInput;
5
11
  export declare const _isValidTemplateValue: (template: string, inputs: {
6
12
  [key: string]: ConnectionInput | ConnectionTemplateInputField;
@@ -14,12 +14,52 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.convertComponent = exports.convertConnection = exports.convertTrigger = exports.convertTemplateInput = exports._isValidTemplateValue = exports.convertInput = void 0;
17
+ exports.convertComponent = exports.convertConnection = exports.convertTrigger = exports.convertTemplateInput = exports._isValidTemplateValue = exports.convertInput = exports.cleanerFor = void 0;
18
18
  const omit_1 = __importDefault(require("lodash/omit"));
19
19
  const types_1 = require("../types");
20
20
  const PollingTriggerDefinition_1 = require("../types/PollingTriggerDefinition");
21
21
  const perform_1 = require("./perform");
22
- const cleanerFor = (input) => "clean" in input ? input.clean : undefined;
22
+ const isPlainObject = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
23
+ /** Auto-generated cleaner for structuredObject/dynamicObject containers.
24
+ * Recursively delegates to each child's clean function. Developers do not
25
+ * declare a top-level clean on these containers — the conversion always
26
+ * supplies one so nested clean functions are applied at runtime. */
27
+ const cleanerFor = (input) => {
28
+ if (input.type === "structuredObject") {
29
+ const childCleaners = Object.entries(input.inputs).reduce((acc, [childKey, childDef]) => (Object.assign(Object.assign({}, acc), { [childKey]: (0, exports.cleanerFor)(childDef) })), {});
30
+ return (value) => {
31
+ if (!isPlainObject(value)) {
32
+ return value;
33
+ }
34
+ return (0, perform_1.cleanParams)(value, childCleaners);
35
+ };
36
+ }
37
+ if (input.type === "dynamicObject") {
38
+ const configCleaners = {};
39
+ for (const [configKey, configDef] of Object.entries(input.configurations)) {
40
+ configCleaners[configKey] = Object.entries(configDef.inputs).reduce((acc, [childKey, childDef]) => (Object.assign(Object.assign({}, acc), { [childKey]: (0, exports.cleanerFor)(childDef) })), {});
41
+ }
42
+ return (value) => {
43
+ if (!isPlainObject(value)) {
44
+ return value;
45
+ }
46
+ const { configuration, values } = value;
47
+ if (typeof configuration !== "string") {
48
+ return value;
49
+ }
50
+ const cleaners = configCleaners[configuration];
51
+ if (!cleaners) {
52
+ return { configuration, values };
53
+ }
54
+ return {
55
+ configuration,
56
+ values: isPlainObject(values) ? (0, perform_1.cleanParams)(values, cleaners) : values,
57
+ };
58
+ };
59
+ }
60
+ return "clean" in input ? input.clean : undefined;
61
+ };
62
+ exports.cleanerFor = cleanerFor;
23
63
  const convertInput = (key, definition) => {
24
64
  // Cast: the field union is wider than any single member; runtime guards below handle it.
25
65
  const _a = definition, { default: defaultValue, type, label, collection, inputs: childInputs, configurations } = _a, rest = __rest(_a, ["default", "type", "label", "collection", "inputs", "configurations"]);
@@ -86,7 +126,7 @@ exports.convertTemplateInput = convertTemplateInput;
86
126
  const convertAction = (actionKey, _a, hooks) => {
87
127
  var { inputs = {}, perform } = _a, action = __rest(_a, ["inputs", "perform"]);
88
128
  const convertedInputs = Object.entries(inputs).map(([key, value]) => (0, exports.convertInput)(key, value));
89
- const inputCleaners = Object.entries(inputs).reduce((result, [key, value]) => (Object.assign(Object.assign({}, result), { [key]: cleanerFor(value) })), {});
129
+ const inputCleaners = Object.entries(inputs).reduce((result, [key, value]) => (Object.assign(Object.assign({}, result), { [key]: (0, exports.cleanerFor)(value) })), {});
90
130
  return Object.assign(Object.assign({}, action), { key: actionKey, inputs: convertedInputs, perform: (0, perform_1.createPerform)(perform, {
91
131
  inputCleaners,
92
132
  errorHandler: hooks === null || hooks === void 0 ? void 0 : hooks.error,
@@ -101,7 +141,7 @@ const convertTrigger = (triggerKey, trigger, hooks) => {
101
141
  const convertedTriggerInputs = Object.entries(inputs).map(([key, value]) => {
102
142
  return (0, exports.convertInput)(key, value);
103
143
  });
104
- const triggerInputCleaners = Object.entries(inputs).reduce((result, [key, value]) => (Object.assign(Object.assign({}, result), { [key]: cleanerFor(value) })), {});
144
+ const triggerInputCleaners = Object.entries(inputs).reduce((result, [key, value]) => (Object.assign(Object.assign({}, result), { [key]: (0, exports.cleanerFor)(value) })), {});
105
145
  let scheduleSupport = "scheduleSupport" in trigger ? trigger.scheduleSupport : "invalid";
106
146
  let convertedActionInputs = [];
107
147
  let performToUse;
@@ -117,7 +157,7 @@ const convertTrigger = (triggerKey, trigger, hooks) => {
117
157
  accum.push((0, exports.convertInput)(key, value));
118
158
  return accum;
119
159
  }, []);
120
- actionInputCleaners = Object.entries(action.inputs).reduce((result, [key, value]) => (Object.assign(Object.assign({}, result), { [key]: cleanerFor(value) })), {});
160
+ actionInputCleaners = Object.entries(action.inputs).reduce((result, [key, value]) => (Object.assign(Object.assign({}, result), { [key]: (0, exports.cleanerFor)(value) })), {});
121
161
  }
122
162
  const combinedCleaners = Object.assign({}, actionInputCleaners, triggerInputCleaners);
123
163
  performToUse = (0, perform_1.createPollingPerform)(trigger, {
@@ -169,7 +209,7 @@ exports.convertTrigger = convertTrigger;
169
209
  const convertDataSource = (dataSourceKey, _a, hooks) => {
170
210
  var { inputs = {}, perform } = _a, dataSource = __rest(_a, ["inputs", "perform"]);
171
211
  const convertedInputs = Object.entries(inputs).map(([key, value]) => (0, exports.convertInput)(key, value));
172
- const inputCleaners = Object.entries(inputs).reduce((result, [key, value]) => (Object.assign(Object.assign({}, result), { [key]: cleanerFor(value) })), {});
212
+ const inputCleaners = Object.entries(inputs).reduce((result, [key, value]) => (Object.assign(Object.assign({}, result), { [key]: (0, exports.cleanerFor)(value) })), {});
173
213
  return Object.assign(Object.assign({}, dataSource), { key: dataSourceKey, inputs: convertedInputs, perform: (0, perform_1.createPerform)(perform, {
174
214
  inputCleaners,
175
215
  errorHandler: hooks === null || hooks === void 0 ? void 0 : hooks.error,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prismatic-io/spectral",
3
- "version": "10.18.7-preview.1",
3
+ "version": "10.18.7-preview.3",
4
4
  "description": "Utility library for building Prismatic connectors and code-native integrations",
5
5
  "keywords": [
6
6
  "prismatic"