@0xsequence/catapult 1.3.16 → 1.4.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 (131) hide show
  1. package/README.md +250 -1
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +1 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/index.d.ts +1 -0
  6. package/dist/commands/index.d.ts.map +1 -1
  7. package/dist/commands/index.js +1 -0
  8. package/dist/commands/index.js.map +1 -1
  9. package/dist/commands/list.d.ts.map +1 -1
  10. package/dist/commands/list.js +12 -0
  11. package/dist/commands/list.js.map +1 -1
  12. package/dist/commands/provenance.d.ts +3 -0
  13. package/dist/commands/provenance.d.ts.map +1 -0
  14. package/dist/commands/provenance.js +138 -0
  15. package/dist/commands/provenance.js.map +1 -0
  16. package/dist/commands/run.d.ts.map +1 -1
  17. package/dist/commands/run.js +7 -4
  18. package/dist/commands/run.js.map +1 -1
  19. package/dist/lib/__tests__/deployer.spec.js +118 -1
  20. package/dist/lib/__tests__/deployer.spec.js.map +1 -1
  21. package/dist/lib/__tests__/network-utils.spec.js +53 -8
  22. package/dist/lib/__tests__/network-utils.spec.js.map +1 -1
  23. package/dist/lib/__tests__/provenance.spec.d.ts +2 -0
  24. package/dist/lib/__tests__/provenance.spec.d.ts.map +1 -0
  25. package/dist/lib/__tests__/provenance.spec.js +205 -0
  26. package/dist/lib/__tests__/provenance.spec.js.map +1 -0
  27. package/dist/lib/contracts/__tests__/repository.spec.js +243 -0
  28. package/dist/lib/contracts/__tests__/repository.spec.js.map +1 -1
  29. package/dist/lib/contracts/repository.d.ts +9 -1
  30. package/dist/lib/contracts/repository.d.ts.map +1 -1
  31. package/dist/lib/contracts/repository.js +93 -7
  32. package/dist/lib/contracts/repository.js.map +1 -1
  33. package/dist/lib/core/__tests__/assert-action.spec.d.ts +2 -0
  34. package/dist/lib/core/__tests__/assert-action.spec.d.ts.map +1 -0
  35. package/dist/lib/core/__tests__/assert-action.spec.js +377 -0
  36. package/dist/lib/core/__tests__/assert-action.spec.js.map +1 -0
  37. package/dist/lib/core/__tests__/engine.spec.js +80 -0
  38. package/dist/lib/core/__tests__/engine.spec.js.map +1 -1
  39. package/dist/lib/core/__tests__/loader.spec.js +29 -0
  40. package/dist/lib/core/__tests__/loader.spec.js.map +1 -1
  41. package/dist/lib/core/__tests__/resolver.spec.js +383 -0
  42. package/dist/lib/core/__tests__/resolver.spec.js.map +1 -1
  43. package/dist/lib/core/engine.d.ts.map +1 -1
  44. package/dist/lib/core/engine.js +33 -0
  45. package/dist/lib/core/engine.js.map +1 -1
  46. package/dist/lib/core/loader.d.ts +1 -0
  47. package/dist/lib/core/loader.d.ts.map +1 -1
  48. package/dist/lib/core/loader.js +6 -1
  49. package/dist/lib/core/loader.js.map +1 -1
  50. package/dist/lib/core/resolver.d.ts +2 -0
  51. package/dist/lib/core/resolver.d.ts.map +1 -1
  52. package/dist/lib/core/resolver.js +89 -0
  53. package/dist/lib/core/resolver.js.map +1 -1
  54. package/dist/lib/deployer.d.ts.map +1 -1
  55. package/dist/lib/deployer.js +21 -4
  56. package/dist/lib/deployer.js.map +1 -1
  57. package/dist/lib/index.d.ts +1 -0
  58. package/dist/lib/index.d.ts.map +1 -1
  59. package/dist/lib/index.js +1 -0
  60. package/dist/lib/index.js.map +1 -1
  61. package/dist/lib/parsers/__tests__/job.spec.js +77 -0
  62. package/dist/lib/parsers/__tests__/job.spec.js.map +1 -1
  63. package/dist/lib/parsers/__tests__/source.spec.d.ts +2 -0
  64. package/dist/lib/parsers/__tests__/source.spec.d.ts.map +1 -0
  65. package/dist/lib/parsers/__tests__/source.spec.js +121 -0
  66. package/dist/lib/parsers/__tests__/source.spec.js.map +1 -0
  67. package/dist/lib/parsers/index.d.ts +1 -0
  68. package/dist/lib/parsers/index.d.ts.map +1 -1
  69. package/dist/lib/parsers/index.js +1 -0
  70. package/dist/lib/parsers/index.js.map +1 -1
  71. package/dist/lib/parsers/job.d.ts.map +1 -1
  72. package/dist/lib/parsers/job.js +11 -0
  73. package/dist/lib/parsers/job.js.map +1 -1
  74. package/dist/lib/parsers/source.d.ts +4 -0
  75. package/dist/lib/parsers/source.d.ts.map +1 -0
  76. package/dist/lib/parsers/source.js +107 -0
  77. package/dist/lib/parsers/source.js.map +1 -0
  78. package/dist/lib/provenance.d.ts +34 -0
  79. package/dist/lib/provenance.d.ts.map +1 -0
  80. package/dist/lib/provenance.js +645 -0
  81. package/dist/lib/provenance.js.map +1 -0
  82. package/dist/lib/types/actions.d.ts +18 -2
  83. package/dist/lib/types/actions.d.ts.map +1 -1
  84. package/dist/lib/types/actions.js +1 -0
  85. package/dist/lib/types/actions.js.map +1 -1
  86. package/dist/lib/types/contracts.d.ts +3 -0
  87. package/dist/lib/types/contracts.d.ts.map +1 -1
  88. package/dist/lib/types/definitions.d.ts +1 -0
  89. package/dist/lib/types/definitions.d.ts.map +1 -1
  90. package/dist/lib/types/index.d.ts +1 -0
  91. package/dist/lib/types/index.d.ts.map +1 -1
  92. package/dist/lib/types/index.js +1 -0
  93. package/dist/lib/types/index.js.map +1 -1
  94. package/dist/lib/types/source.d.ts +24 -0
  95. package/dist/lib/types/source.d.ts.map +1 -0
  96. package/dist/lib/types/source.js +3 -0
  97. package/dist/lib/types/source.js.map +1 -0
  98. package/dist/lib/types/values.d.ts +33 -1
  99. package/dist/lib/types/values.d.ts.map +1 -1
  100. package/package.json +1 -1
  101. package/src/cli.ts +3 -2
  102. package/src/commands/index.ts +2 -1
  103. package/src/commands/list.ts +14 -1
  104. package/src/commands/provenance.ts +120 -0
  105. package/src/commands/run.ts +11 -6
  106. package/src/lib/__tests__/deployer.spec.ts +177 -1
  107. package/src/lib/__tests__/network-utils.spec.ts +63 -14
  108. package/src/lib/__tests__/provenance.spec.ts +208 -0
  109. package/src/lib/contracts/__tests__/repository.spec.ts +270 -2
  110. package/src/lib/contracts/repository.ts +112 -14
  111. package/src/lib/core/__tests__/assert-action.spec.ts +474 -0
  112. package/src/lib/core/__tests__/engine.spec.ts +116 -0
  113. package/src/lib/core/__tests__/loader.spec.ts +34 -1
  114. package/src/lib/core/__tests__/resolver.spec.ts +444 -1
  115. package/src/lib/core/engine.ts +52 -0
  116. package/src/lib/core/loader.ts +8 -2
  117. package/src/lib/core/resolver.ts +116 -0
  118. package/src/lib/deployer.ts +28 -4
  119. package/src/lib/index.ts +4 -1
  120. package/src/lib/parsers/__tests__/job.spec.ts +81 -0
  121. package/src/lib/parsers/__tests__/source.spec.ts +134 -0
  122. package/src/lib/parsers/index.ts +1 -0
  123. package/src/lib/parsers/job.ts +14 -2
  124. package/src/lib/parsers/source.ts +129 -0
  125. package/src/lib/provenance.ts +785 -0
  126. package/src/lib/types/actions.ts +22 -1
  127. package/src/lib/types/contracts.ts +4 -1
  128. package/src/lib/types/definitions.ts +7 -0
  129. package/src/lib/types/index.ts +1 -0
  130. package/src/lib/types/source.ts +26 -0
  131. package/src/lib/types/values.ts +71 -0
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const source_1 = require("../source");
4
+ describe('Source Provenance Parsing', () => {
5
+ it('should return null for non-source YAML documents', () => {
6
+ const result = (0, source_1.parseSourceDocument)(`
7
+ type: constants
8
+ constants:
9
+ value: 1
10
+ `);
11
+ expect(result).toBeNull();
12
+ });
13
+ it('should parse source provenance documents', () => {
14
+ const result = (0, source_1.parseSourceDocument)(`
15
+ type: source
16
+ build_info:
17
+ "./stage1.json":
18
+ repo: "https://github.com/0xsequence/wallet-contracts-v3"
19
+ ref: "v3.0.0-rc.5"
20
+ commit: "0d9061f229da73edae890e6fdd1fbf753028df6d"
21
+ build: "forge build --build-info"
22
+ contracts:
23
+ "src/Stage1Module.sol:Stage1Module":
24
+ ref: "stage1-special"
25
+ `);
26
+ expect(result).not.toBeNull();
27
+ expect(result.build_info['./stage1.json'].repo).toBe('https://github.com/0xsequence/wallet-contracts-v3');
28
+ expect(result.build_info['./stage1.json'].contracts?.['src/Stage1Module.sol:Stage1Module'].ref).toBe('stage1-special');
29
+ });
30
+ it('should require repo on each build-info provenance entry', () => {
31
+ const result = (0, source_1.parseSourceDocument)(`
32
+ type: source
33
+ build_info:
34
+ "./stage1.json":
35
+ ref: "v3.0.0-rc.5"
36
+ `);
37
+ expect(result).not.toBeNull();
38
+ expect(result.build_info).toEqual({});
39
+ expect(result.warnings).toEqual([
40
+ expect.stringContaining('build_info["./stage1.json"].repo')
41
+ ]);
42
+ });
43
+ it('should validate optional string fields', () => {
44
+ const result = (0, source_1.parseSourceDocument)(`
45
+ type: source
46
+ build_info:
47
+ "./stage1.json":
48
+ repo: "https://github.com/0xsequence/wallet-contracts-v3"
49
+ commit: 123
50
+ `);
51
+ expect(result).not.toBeNull();
52
+ expect(result.build_info).toEqual({});
53
+ expect(result.warnings).toEqual([
54
+ expect.stringContaining('commit')
55
+ ]);
56
+ });
57
+ it('should reject unsupported fields', () => {
58
+ const result = (0, source_1.parseSourceDocument)(`
59
+ type: source
60
+ build_info:
61
+ "./stage1.json":
62
+ repo: "https://github.com/0xsequence/wallet-contracts-v3"
63
+ path: "contracts"
64
+ `);
65
+ expect(result).not.toBeNull();
66
+ expect(result.build_info).toEqual({});
67
+ expect(result.warnings).toEqual([
68
+ expect.stringContaining('path is not supported')
69
+ ]);
70
+ });
71
+ it('should quote build-info paths in validation errors', () => {
72
+ const result = (0, source_1.parseSourceDocument)(`
73
+ type: source
74
+ build_info:
75
+ "./stage1.json":
76
+ ref: "v3.0.0-rc.5"
77
+ `);
78
+ expect(result).not.toBeNull();
79
+ expect(result.warnings).toEqual([
80
+ expect.stringContaining('build_info["./stage1.json"].repo')
81
+ ]);
82
+ });
83
+ it('should keep valid entries when sibling entries are invalid', () => {
84
+ const result = (0, source_1.parseSourceDocument)(`
85
+ type: source
86
+ build_info:
87
+ "./stage1.json":
88
+ repo: "https://github.com/0xsequence/wallet-contracts-v3"
89
+ "./bad.json":
90
+ typo_field: true
91
+ `);
92
+ expect(result).not.toBeNull();
93
+ expect(Object.keys(result.build_info)).toEqual(['./stage1.json']);
94
+ expect(result.warnings).toEqual([
95
+ expect.stringContaining('typo_field is not supported')
96
+ ]);
97
+ });
98
+ describe('mergeSourceProvenance', () => {
99
+ it('should merge contract overrides into build-info provenance', () => {
100
+ const result = (0, source_1.mergeSourceProvenance)({
101
+ repo: 'https://github.com/0xsequence/wallet-contracts-v3',
102
+ ref: 'v3.0.0-rc.5',
103
+ commit: '0d9061f229da73edae890e6fdd1fbf753028df6d',
104
+ contracts: {
105
+ 'src/Stage1Module.sol:Stage1Module': {
106
+ ref: 'stage1-special'
107
+ }
108
+ }
109
+ }, {
110
+ ref: 'stage1-special'
111
+ });
112
+ expect(result).toEqual({
113
+ repo: 'https://github.com/0xsequence/wallet-contracts-v3',
114
+ ref: 'stage1-special',
115
+ commit: '0d9061f229da73edae890e6fdd1fbf753028df6d'
116
+ });
117
+ expect(result).not.toHaveProperty('contracts');
118
+ });
119
+ });
120
+ });
121
+ //# sourceMappingURL=source.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.spec.js","sourceRoot":"","sources":["../../../../src/lib/parsers/__tests__/source.spec.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,5 @@ export * from './template';
2
2
  export * from './job';
3
3
  export * from './buildinfo';
4
4
  export * from './constants';
5
+ export * from './source';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAA;AAC1B,cAAc,OAAO,CAAA;AACrB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAA;AAC1B,cAAc,OAAO,CAAA;AACrB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA"}
@@ -18,4 +18,5 @@ __exportStar(require("./template"), exports);
18
18
  __exportStar(require("./job"), exports);
19
19
  __exportStar(require("./buildinfo"), exports);
20
20
  __exportStar(require("./constants"), exports);
21
+ __exportStar(require("./source"), exports);
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/parsers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,6CAA0B;AAC1B,wCAAqB;AACrB,8CAA2B;AAC3B,8CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/parsers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,6CAA0B;AAC1B,wCAAqB;AACrB,8CAA2B;AAC3B,8CAA2B;AAC3B,2CAAwB"}
@@ -1 +1 @@
1
- {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/job.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,GAAG,EAAa,MAAM,UAAU,CAAA;AAiCpD,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAiHjD"}
1
+ {"version":3,"file":"job.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/job.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,GAAG,EAAa,MAAM,UAAU,CAAA;AAiCpD,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CA6HjD"}
@@ -85,6 +85,16 @@ function parseJob(yamlContent) {
85
85
  }
86
86
  }
87
87
  }
88
+ if (rawObject.skip_if !== undefined) {
89
+ if (!Array.isArray(rawObject.skip_if)) {
90
+ throw new Error(`Invalid job "${rawObject.name}": "skip_if" must be an array if provided.`);
91
+ }
92
+ for (const condition of rawObject.skip_if) {
93
+ if (!isCondition(condition)) {
94
+ throw new Error(`Invalid job "${rawObject.name}": "skip_if" contains an invalid condition entry.`);
95
+ }
96
+ }
97
+ }
88
98
  if (rawObject.constants !== undefined) {
89
99
  if (typeof rawObject.constants !== 'object' || rawObject.constants === null || Array.isArray(rawObject.constants)) {
90
100
  throw new Error(`Invalid job "${rawObject.name}": "constants" field must be an object if provided.`);
@@ -101,6 +111,7 @@ function parseJob(yamlContent) {
101
111
  min_evm_version: rawObject.min_evm_version,
102
112
  deprecated: rawObject.deprecated === true,
103
113
  skip_condition: rawObject.skip_condition,
114
+ skip_if: rawObject.skip_if,
104
115
  constants: rawObject.constants,
105
116
  };
106
117
  return job;
@@ -1 +1 @@
1
- {"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/lib/parsers/job.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"job.js","sourceRoot":"","sources":["../../../src/lib/parsers/job.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { BuildInfoSourceProvenance, SourceDocument, SourceProvenance, SourceProvenanceOverride } from '../types';
2
+ export declare function parseSourceDocument(yamlContent: string): SourceDocument | null;
3
+ export declare function mergeSourceProvenance(base: BuildInfoSourceProvenance, override?: SourceProvenanceOverride): SourceProvenance;
4
+ //# sourceMappingURL=source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAA;AAwEhH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CA4C9E;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,yBAAyB,EAC/B,QAAQ,CAAC,EAAE,wBAAwB,GAClC,gBAAgB,CAMlB"}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseSourceDocument = parseSourceDocument;
4
+ exports.mergeSourceProvenance = mergeSourceProvenance;
5
+ const yaml_1 = require("yaml");
6
+ const STRING_FIELDS = ['repo', 'ref', 'commit', 'build'];
7
+ const BUILD_INFO_FIELDS = new Set([...STRING_FIELDS, 'contracts']);
8
+ const CONTRACT_OVERRIDE_FIELDS = new Set(STRING_FIELDS);
9
+ function isPlainObject(value) {
10
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
11
+ }
12
+ function buildInfoLabel(buildInfoPath) {
13
+ return `build_info[${JSON.stringify(buildInfoPath)}]`;
14
+ }
15
+ function contractOverrideLabel(buildInfoPath, contractName) {
16
+ return `${buildInfoLabel(buildInfoPath)}.contracts[${JSON.stringify(contractName)}]`;
17
+ }
18
+ function validateKnownFields(value, label, allowedFields) {
19
+ for (const field of Object.keys(value)) {
20
+ if (!allowedFields.has(field)) {
21
+ throw new Error(`Invalid source: ${label}.${field} is not supported.`);
22
+ }
23
+ }
24
+ }
25
+ function validateStringFields(value, label, requiredRepo) {
26
+ if (requiredRepo && (typeof value.repo !== 'string' || value.repo.length === 0)) {
27
+ throw new Error(`Invalid source: ${label}.repo field is required and must be a non-empty string.`);
28
+ }
29
+ for (const field of STRING_FIELDS) {
30
+ if (value[field] !== undefined && typeof value[field] !== 'string') {
31
+ throw new Error(`Invalid source: ${label}.${field} must be a string if provided.`);
32
+ }
33
+ }
34
+ }
35
+ function validateBuildInfoProvenance(buildInfoPath, provenance) {
36
+ if (!isPlainObject(provenance)) {
37
+ throw new Error(`Invalid source: ${buildInfoLabel(buildInfoPath)} must be an object.`);
38
+ }
39
+ const label = buildInfoLabel(buildInfoPath);
40
+ validateKnownFields(provenance, label, BUILD_INFO_FIELDS);
41
+ validateStringFields(provenance, label, true);
42
+ if (provenance.contracts !== undefined) {
43
+ if (!isPlainObject(provenance.contracts)) {
44
+ throw new Error(`Invalid source: ${label}.contracts must be an object if provided.`);
45
+ }
46
+ for (const [contractName, override] of Object.entries(provenance.contracts)) {
47
+ if (!contractName || typeof contractName !== 'string') {
48
+ throw new Error(`Invalid source: ${label}.contracts keys must be non-empty strings.`);
49
+ }
50
+ if (!isPlainObject(override)) {
51
+ throw new Error(`Invalid source: ${contractOverrideLabel(buildInfoPath, contractName)} must be an object.`);
52
+ }
53
+ const overrideLabel = contractOverrideLabel(buildInfoPath, contractName);
54
+ validateKnownFields(override, overrideLabel, CONTRACT_OVERRIDE_FIELDS);
55
+ validateStringFields(override, overrideLabel, false);
56
+ }
57
+ }
58
+ return provenance;
59
+ }
60
+ function parseSourceDocument(yamlContent) {
61
+ let rawObject;
62
+ try {
63
+ rawObject = (0, yaml_1.parse)(yamlContent);
64
+ }
65
+ catch (e) {
66
+ if (e instanceof yaml_1.YAMLParseError) {
67
+ const line = e.linePos?.[0]?.line ? ` at line ${e.linePos[0].line}` : '';
68
+ throw new Error(`Failed to parse source YAML: ${e.message}${line}.`);
69
+ }
70
+ throw e;
71
+ }
72
+ if (!rawObject || typeof rawObject !== 'object') {
73
+ return null;
74
+ }
75
+ if (rawObject.type !== 'source') {
76
+ return null;
77
+ }
78
+ if (!isPlainObject(rawObject.build_info)) {
79
+ throw new Error('Invalid source: "build_info" field is required and must be an object.');
80
+ }
81
+ const buildInfo = {};
82
+ const warnings = [];
83
+ for (const [buildInfoPath, provenance] of Object.entries(rawObject.build_info)) {
84
+ if (!buildInfoPath || typeof buildInfoPath !== 'string') {
85
+ throw new Error('Invalid source: "build_info" keys must be non-empty strings.');
86
+ }
87
+ try {
88
+ buildInfo[buildInfoPath] = validateBuildInfoProvenance(buildInfoPath, provenance);
89
+ }
90
+ catch (error) {
91
+ warnings.push(error instanceof Error ? error.message : String(error));
92
+ }
93
+ }
94
+ return {
95
+ type: 'source',
96
+ build_info: buildInfo,
97
+ warnings
98
+ };
99
+ }
100
+ function mergeSourceProvenance(base, override) {
101
+ const { contracts, ...baseFields } = base;
102
+ return {
103
+ ...baseFields,
104
+ ...(override || {})
105
+ };
106
+ }
107
+ //# sourceMappingURL=source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/lib/parsers/source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { BuildInfoSourceProvenance } from './types/source';
2
+ export interface SourceProvenanceEntry {
3
+ sourceDocumentPath: string;
4
+ buildInfoRef: string;
5
+ buildInfoPath: string;
6
+ provenance: BuildInfoSourceProvenance;
7
+ }
8
+ export interface CollectProvenanceOptions {
9
+ jobs?: string[];
10
+ includeDependencies?: boolean;
11
+ loadStdTemplates?: boolean;
12
+ }
13
+ export interface ProvenanceOperationOptions extends CollectProvenanceOptions {
14
+ force?: boolean;
15
+ }
16
+ export type ProvenanceOperationStatus = 'verified' | 'generated' | 'skipped' | 'failed';
17
+ export interface ProvenanceOperationResult {
18
+ entry: SourceProvenanceEntry;
19
+ status: ProvenanceOperationStatus;
20
+ message: string;
21
+ generatedBuildInfoPath?: string;
22
+ }
23
+ export interface ProvenanceRunResult {
24
+ entries: SourceProvenanceEntry[];
25
+ warnings: string[];
26
+ results: ProvenanceOperationResult[];
27
+ }
28
+ export declare function collectSourceProvenanceEntries(projectRoot: string, options?: CollectProvenanceOptions): Promise<{
29
+ entries: SourceProvenanceEntry[];
30
+ warnings: string[];
31
+ }>;
32
+ export declare function verifySourceProvenance(projectRoot: string, options?: CollectProvenanceOptions): Promise<ProvenanceRunResult>;
33
+ export declare function generateBuildInfoFromSourceProvenance(projectRoot: string, options?: ProvenanceOperationOptions): Promise<ProvenanceRunResult>;
34
+ //# sourceMappingURL=provenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provenance.d.ts","sourceRoot":"","sources":["../../src/lib/provenance.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAU1D,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,yBAAyB,CAAA;CACtC;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,0BAA2B,SAAQ,wBAAwB;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,MAAM,yBAAyB,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEvF,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,qBAAqB,CAAA;IAC5B,MAAM,EAAE,yBAAyB,CAAA;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,sBAAsB,CAAC,EAAE,MAAM,CAAA;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,qBAAqB,EAAE,CAAA;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,EAAE,yBAAyB,EAAE,CAAA;CACrC;AAsBD,wBAAsB,8BAA8B,CAClD,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC;IAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAiDnE;AAED,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,mBAAmB,CAAC,CAiB9B;AAED,wBAAsB,qCAAqC,CACzD,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,mBAAmB,CAAC,CAiB9B"}