@fyuld/snitch 2.2.3 → 2.3.1

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.
@@ -51,7 +51,7 @@ async function firstRunCommand(projectName, maybeUrl) {
51
51
  },
52
52
  keywords: [],
53
53
  author: '',
54
- license: 'ISC',
54
+ license: 'UNLICENSED',
55
55
  };
56
56
  fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf-8');
57
57
  console.log('✓ Created package.json');
@@ -1 +1 @@
1
- {"version":3,"file":"firstRun.js","sourceRoot":"","sources":["../../src/commands/firstRun.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,0CAqBC;AA3BD,uCAAwB;AACxB,2CAA4B;AAE5B,iCAAoC;AACpC,uCAA0C;AAEnC,KAAK,UAAU,eAAe,CAAC,WAAwB,EAAE,QAAc;IAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE;gBACP,IAAI,EAAE,2CAA2C;aAClD;YACD,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,KAAK;SACf,CAAA;QACD,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAChF,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,IAAA,kBAAW,EAAC,QAAQ,CAAC,CAAA;IAC3B,MAAM,IAAA,wBAAc,GAAE,CAAA;AACxB,CAAC"}
1
+ {"version":3,"file":"firstRun.js","sourceRoot":"","sources":["../../src/commands/firstRun.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,0CAqBC;AA3BD,uCAAwB;AACxB,2CAA4B;AAE5B,iCAAoC;AACpC,uCAA0C;AAEnC,KAAK,UAAU,eAAe,CAAC,WAAwB,EAAE,QAAc;IAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE;gBACP,IAAI,EAAE,2CAA2C;aAClD;YACD,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,YAAY;SACtB,CAAA;QACD,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAChF,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,IAAA,kBAAW,EAAC,QAAQ,CAAC,CAAA;IAC3B,MAAM,IAAA,wBAAc,GAAE,CAAA;AACxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":"AAKA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAkCpD"}
1
+ {"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":"AAOA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAmCpD"}
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.prepareCommand = prepareCommand;
37
37
  const fs = __importStar(require("fs"));
38
38
  const path = __importStar(require("path"));
39
+ const https = __importStar(require("https"));
39
40
  const SnitchConfigManager_1 = require("../SnitchConfigManager");
40
41
  const enforcement_software_1 = require("../utils/enforcement-software");
41
42
  async function prepareCommand() {
@@ -60,10 +61,45 @@ async function prepareCommand() {
60
61
  console.log('✓ Created directories:');
61
62
  createdDirs.forEach((dir) => console.log(` - ${dir}`));
62
63
  }
63
- if (config.enforcementSoftware && config.enforcementSoftware.length > 0) {
64
- for (const enforcement of config.enforcementSoftware) {
65
- await (0, enforcement_software_1.installEnforcementSoftware)(enforcement);
64
+ if (config.thirdPartyTools && config.thirdPartyTools.length > 0) {
65
+ for (const toolEntry of config.thirdPartyTools) {
66
+ const resolvedTool = await resolveThirdPartyTool(toolEntry);
67
+ await (0, enforcement_software_1.installThirdPartyTool)(resolvedTool);
66
68
  }
67
69
  }
68
70
  }
71
+ async function resolveThirdPartyTool(entry) {
72
+ if ('$ref' in entry) {
73
+ const url = entry.$ref;
74
+ console.log(`📥 Fetching tool configuration from: ${url}`);
75
+ const content = await fetchUrl(url);
76
+ const parsed = JSON.parse(content);
77
+ return parsed;
78
+ }
79
+ if ('_extends' in entry) {
80
+ throw new Error('_extends is not yet supported for ThirdPartyTool');
81
+ }
82
+ return entry;
83
+ }
84
+ async function fetchUrl(url) {
85
+ return new Promise((resolve, reject) => {
86
+ https
87
+ .get(url, (res) => {
88
+ if (res.statusCode !== 200) {
89
+ reject(new Error(`Failed to fetch ${url}: HTTP ${res.statusCode}`));
90
+ return;
91
+ }
92
+ let data = '';
93
+ res.on('data', (chunk) => {
94
+ data += chunk;
95
+ });
96
+ res.on('end', () => {
97
+ resolve(data);
98
+ });
99
+ })
100
+ .on('error', (err) => {
101
+ reject(new Error(`Failed to fetch ${url}: ${err.message}`));
102
+ });
103
+ });
104
+ }
69
105
  //# sourceMappingURL=prepare.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,wCAkCC;AAvCD,uCAAwB;AACxB,2CAA4B;AAC5B,gEAA4D;AAC5D,wEAA0E;AAEnE,KAAK,UAAU,cAAc;IAClC,MAAM,MAAM,GAAG,yCAAmB,CAAC,UAAU,EAAE,CAAA;IAE/C,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAA;QACtE,OAAM;IACR,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IAEnD,IAAI,WAAW,GAAa,EAAE,CAAA;IAE9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC5C,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1C,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;IACzC,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;QACrC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAA;IACzD,CAAC;IAED,IAAI,MAAM,CAAC,mBAAmB,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxE,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;YACrD,MAAM,IAAA,iDAA0B,EAAC,WAAW,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"policy-loader.d.ts","sourceRoot":"","sources":["../../src/config/policy-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAgB,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAErF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAY5E"}
1
+ {"version":3,"file":"policy-loader.d.ts","sourceRoot":"","sources":["../../src/config/policy-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAgB,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAErF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAgB5E"}
@@ -6,8 +6,12 @@ function loadPoliciesFromConfig(config) {
6
6
  return [];
7
7
  }
8
8
  const policies = [];
9
- for (const [id, policyConfig] of Object.entries(config.policies)) {
10
- policies.push(convertToPolicyObject(id, policyConfig));
9
+ for (const [id, policyEntry] of Object.entries(config.policies)) {
10
+ if ('$ref' in policyEntry || '_extends' in policyEntry) {
11
+ console.warn(`⚠️ Policy '${id}' uses $ref or _extends which are not yet supported. Skipping.`);
12
+ continue;
13
+ }
14
+ policies.push(convertToPolicyObject(id, policyEntry));
11
15
  }
12
16
  return policies;
13
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"policy-loader.js","sourceRoot":"","sources":["../../src/config/policy-loader.ts"],"names":[],"mappings":";;AAGA,wDAYC;AAZD,SAAgB,sBAAsB,CAAC,MAA2B;IAChE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,KAAK,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,qBAAqB,CAAC,EAAU,EAAE,MAAoB;IAC7D,OAAO;QACL,EAAE;QACF,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"policy-loader.js","sourceRoot":"","sources":["../../src/config/policy-loader.ts"],"names":[],"mappings":";;AAGA,wDAgBC;AAhBD,SAAgB,sBAAsB,CAAC,MAA2B;IAChE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,EAAE,CAAA;IACX,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,KAAK,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChE,IAAI,MAAM,IAAI,WAAW,IAAI,UAAU,IAAI,WAAW,EAAE,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,gEAAgE,CAAC,CAAA;YAC/F,SAAQ;QACV,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAA;IACvD,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,qBAAqB,CAAC,EAAU,EAAE,MAAoB;IAC7D,OAAO;QACL,EAAE;QACF,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAA;AACH,CAAC"}
@@ -6,21 +6,33 @@ export type PolicyConfig = {
6
6
  title: string;
7
7
  violations: ViolationRule[];
8
8
  };
9
- export type EnforcementSoftware = {
9
+ export type JsonConfigurationEntry<Type> = Type | {
10
+ $ref: string;
11
+ } | ({
12
+ _extends: string;
13
+ } & Partial<Type>);
14
+ export type ThirdPartyTool = {
15
+ title: string;
16
+ description: string;
17
+ id: string;
18
+ purpose: string[];
10
19
  software: {
11
20
  pm: 'npm';
12
21
  name: string;
13
22
  version?: string;
14
23
  };
15
24
  configuration: Uri | object;
25
+ sideEffects?: {
26
+ 'package.json'?: object;
27
+ };
16
28
  };
17
29
  export type SnitchConfiguration = {
18
30
  extends?: string;
19
31
  sourceDirectory: string;
20
32
  testsDirectory: string;
21
33
  commands?: Record<string, PublicCommandConfig>;
22
- policies: Record<string, PolicyConfig>;
23
- enforcementSoftware?: EnforcementSoftware[];
34
+ policies: Record<string, JsonConfigurationEntry<PolicyConfig>>;
35
+ thirdPartyTools?: JsonConfigurationEntry<ThirdPartyTool>[];
24
36
  };
25
37
  export declare const snitchConfigurationSchema: JsonSchema<SnitchConfiguration>;
26
38
  //# sourceMappingURL=snitch-configuration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"snitch-configuration.d.ts","sourceRoot":"","sources":["../../src/datamodel/snitch-configuration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAE3B,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,aAAa,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE;QACR,EAAE,EAAE,KAAK,CAAA;QACT,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,aAAa,EAAE,GAAG,GAAG,MAAM,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC9C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACtC,mBAAmB,CAAC,EAAE,mBAAmB,EAAE,CAAA;CAC5C,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,UAAU,CAAC,mBAAmB,CAgCrE,CAAA"}
1
+ {"version":3,"file":"snitch-configuration.d.ts","sourceRoot":"","sources":["../../src/datamodel/snitch-configuration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAE3B,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,aAAa,EAAE,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,sBAAsB,CAAC,IAAI,IAAI,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;AAE3G,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE;QACR,EAAE,EAAE,KAAK,CAAA;QACT,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;IACD,aAAa,EAAE,GAAG,GAAG,MAAM,CAAA;IAC3B,WAAW,CAAC,EAAE;QACZ,cAAc,CAAC,EAAE,MAAM,CAAA;KACxB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC9C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAA;IAC9D,eAAe,CAAC,EAAE,sBAAsB,CAAC,cAAc,CAAC,EAAE,CAAA;CAC3D,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,UAAU,CAAC,mBAAmB,CAgCrE,CAAA"}
@@ -25,7 +25,7 @@ exports.snitchConfigurationSchema = {
25
25
  required: [],
26
26
  additionalProperties: true,
27
27
  },
28
- enforcementSoftware: {
28
+ thirdPartyTools: {
29
29
  type: 'array',
30
30
  items: {},
31
31
  nullable: true,
@@ -1 +1 @@
1
- {"version":3,"file":"snitch-configuration.js","sourceRoot":"","sources":["../../src/datamodel/snitch-configuration.ts"],"names":[],"mappings":";;;AA4Ba,QAAA,yBAAyB,GAAoC;IACxE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;SACf;QACD,eAAe,EAAE;YACf,IAAI,EAAE,QAAQ;SACf;QACD,cAAc,EAAE;YACd,IAAI,EAAE,QAAQ;SACf;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE;YACZ,oBAAoB,EAAE,IAAI;YAC1B,QAAQ,EAAE,IAAI;SACf;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE;YACZ,oBAAoB,EAAE,IAAI;SAC3B;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAS;YAChB,QAAQ,EAAE,IAAI;SACf;KACF;IACD,QAAQ,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,CAAC;IAC3D,oBAAoB,EAAE,KAAK;CAC5B,CAAA"}
1
+ {"version":3,"file":"snitch-configuration.js","sourceRoot":"","sources":["../../src/datamodel/snitch-configuration.ts"],"names":[],"mappings":";;;AAqCa,QAAA,yBAAyB,GAAoC;IACxE,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;SACf;QACD,eAAe,EAAE;YACf,IAAI,EAAE,QAAQ;SACf;QACD,cAAc,EAAE;YACd,IAAI,EAAE,QAAQ;SACf;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE;YACZ,oBAAoB,EAAE,IAAI;YAC1B,QAAQ,EAAE,IAAI;SACf;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,EAAE;YACZ,oBAAoB,EAAE,IAAI;SAC3B;QACD,eAAe,EAAE;YACf,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAS;YAChB,QAAQ,EAAE,IAAI;SACf;KACF;IACD,QAAQ,EAAE,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,UAAU,CAAC;IAC3D,oBAAoB,EAAE,KAAK;CAC5B,CAAA"}
@@ -1,3 +1,3 @@
1
- import { EnforcementSoftware } from '../datamodel/snitch-configuration';
2
- export declare function installEnforcementSoftware(enforcement: EnforcementSoftware): Promise<void>;
1
+ import { ThirdPartyTool } from '../datamodel/snitch-configuration';
2
+ export declare function installThirdPartyTool(tool: ThirdPartyTool): Promise<void>;
3
3
  //# sourceMappingURL=enforcement-software.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"enforcement-software.d.ts","sourceRoot":"","sources":["../../src/utils/enforcement-software.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAYvE,wBAAsB,0BAA0B,CAAC,WAAW,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAahG"}
1
+ {"version":3,"file":"enforcement-software.d.ts","sourceRoot":"","sources":["../../src/utils/enforcement-software.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAalE,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/E"}
@@ -33,23 +33,27 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.installEnforcementSoftware = installEnforcementSoftware;
36
+ exports.installThirdPartyTool = installThirdPartyTool;
37
37
  const fs = __importStar(require("fs"));
38
38
  const path = __importStar(require("path"));
39
39
  const child_process_1 = require("child_process");
40
40
  const https = __importStar(require("https"));
41
+ const json_merge_1 = require("./json-merge");
41
42
  const CONFIG_FILENAMES = {
42
43
  prettier: '.prettierrc.json',
43
44
  jest: 'jest.config.json',
44
45
  };
45
- async function installEnforcementSoftware(enforcement) {
46
- const { software, configuration } = enforcement;
46
+ async function installThirdPartyTool(tool) {
47
+ const { software, configuration, sideEffects } = tool;
47
48
  console.log(`📦 Installing ${software.name}...`);
48
49
  const version = software.version ? `@${software.version}` : '';
49
50
  (0, child_process_1.execSync)(`npm install --save-dev ${software.name}${version}`, { stdio: 'inherit' });
50
51
  const configContent = await resolveConfiguration(configuration);
51
52
  const filename = getConfigFilename(software.name);
52
53
  fs.writeFileSync(path.resolve(filename), configContent, 'utf-8');
54
+ if (sideEffects) {
55
+ applySideEffects(sideEffects);
56
+ }
53
57
  console.log(`✓ Installed ${software.name} and created ${filename}`);
54
58
  }
55
59
  async function resolveConfiguration(source) {
@@ -79,8 +83,17 @@ async function resolveConfiguration(source) {
79
83
  function getConfigFilename(softwareName) {
80
84
  const filename = CONFIG_FILENAMES[softwareName];
81
85
  if (!filename) {
82
- throw new Error(`Unknown enforcement software: ${softwareName}. Supported: ${Object.keys(CONFIG_FILENAMES).join(', ')}`);
86
+ throw new Error(`Unknown third party tool: ${softwareName}. Supported: ${Object.keys(CONFIG_FILENAMES).join(', ')}`);
83
87
  }
84
88
  return filename;
85
89
  }
90
+ function applySideEffects(sideEffects) {
91
+ if (sideEffects['package.json']) {
92
+ const packageJsonPath = path.resolve('package.json');
93
+ const currentPackageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
94
+ const mergedPackageJson = (0, json_merge_1.mergeJson)(currentPackageJson, sideEffects['package.json']);
95
+ fs.writeFileSync(packageJsonPath, JSON.stringify(mergedPackageJson, null, 2), 'utf-8');
96
+ console.log('✓ Updated package.json with side effects');
97
+ }
98
+ }
86
99
  //# sourceMappingURL=enforcement-software.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enforcement-software.js","sourceRoot":"","sources":["../../src/utils/enforcement-software.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,gEAaC;AAvBD,uCAAwB;AACxB,2CAA4B;AAC5B,iDAAwC;AACxC,6CAA8B;AAE9B,MAAM,gBAAgB,GAA2B;IAC/C,QAAQ,EAAE,kBAAkB;IAC5B,IAAI,EAAE,kBAAkB;CACzB,CAAA;AAEM,KAAK,UAAU,0BAA0B,CAAC,WAAgC;IAC/E,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,WAAW,CAAA;IAE/C,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAA;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9D,IAAA,wBAAQ,EAAC,0BAA0B,QAAQ,CAAC,IAAI,GAAG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;IAEnF,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,aAAa,CAAC,CAAA;IAE/D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACjD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;IAEhE,OAAO,CAAC,GAAG,CAAC,eAAe,QAAQ,CAAC,IAAI,gBAAgB,QAAQ,EAAE,CAAC,CAAA;AACrE,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,MAAoB;IACtD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACxC,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,KAAK;aACF,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;YACnB,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;gBACtE,OAAM;YACR,CAAC;YACD,IAAI,IAAI,GAAG,EAAE,CAAA;YACb,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,IAAI,IAAI,KAAK,CAAA;YACf,CAAC,CAAC,CAAA;YACF,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,OAAO,CAAC,IAAI,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACnB,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAChE,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,YAAoB;IAC7C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAA;IAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,iCAAiC,YAAY,gBAAgB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxG,CAAA;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"enforcement-software.js","sourceRoot":"","sources":["../../src/utils/enforcement-software.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function mergeJson(target: object, source: object): object;
2
+ //# sourceMappingURL=json-merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-merge.d.ts","sourceRoot":"","sources":["../../src/utils/json-merge.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhE"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeJson = mergeJson;
4
+ const MAX_DEPTH = 16;
5
+ function mergeJson(target, source) {
6
+ return _mergeJson(target, source, 0);
7
+ }
8
+ function _mergeJson(target, source, depth) {
9
+ if (depth > MAX_DEPTH) {
10
+ throw new Error(`Maximum merge depth of ${MAX_DEPTH} exceeded`);
11
+ }
12
+ if (typeof source !== 'object' || source === null) {
13
+ return source;
14
+ }
15
+ if (typeof target !== 'object' || target === null) {
16
+ return source;
17
+ }
18
+ if (Array.isArray(source)) {
19
+ return source;
20
+ }
21
+ const result = { ...target };
22
+ for (const key in source) {
23
+ const sourceValue = source[key];
24
+ const targetValue = result[key];
25
+ if (typeof sourceValue === 'object' && sourceValue !== null && !Array.isArray(sourceValue)) {
26
+ result[key] = _mergeJson(targetValue, sourceValue, depth + 1);
27
+ }
28
+ else {
29
+ result[key] = sourceValue;
30
+ }
31
+ }
32
+ return result;
33
+ }
34
+ //# sourceMappingURL=json-merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-merge.js","sourceRoot":"","sources":["../../src/utils/json-merge.ts"],"names":[],"mappings":";;AAEA,8BAEC;AAJD,MAAM,SAAS,GAAG,EAAE,CAAA;AAEpB,SAAgB,SAAS,CAAC,MAAc,EAAE,MAAc;IACtD,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;AACtC,CAAC;AAED,SAAS,UAAU,CAAC,MAAW,EAAE,MAAW,EAAE,KAAa;IACzD,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,SAAS,WAAW,CAAC,CAAA;IACjE,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,MAAM,GAAQ,EAAE,GAAG,MAAM,EAAE,CAAA;IAEjC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAC/B,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QAE/B,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3F,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;QAC/D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fyuld/snitch",
3
- "version": "2.2.3",
3
+ "version": "2.3.1",
4
4
  "description": "Snitch",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,197 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "title": "Snitch Configuration",
4
- "description": "Configuration file for Snitch code quality policies",
5
- "type": "object",
6
- "properties": {
7
- "extends": {
8
- "type": "string",
9
- "description": "Base configuration to extend from"
10
- },
11
- "sourceDirectory": {
12
- "type": "string",
13
- "description": "Directory containing source code to analyze"
14
- },
15
- "testsDirectory": {
16
- "type": "string",
17
- "description": "Directory containing test files"
18
- },
19
- "policies": {
20
- "type": "object",
21
- "description": "Policy definitions with provider pipelines",
22
- "additionalProperties": {
23
- "$ref": "#/definitions/Policy"
24
- }
25
- },
26
- "enforcementSoftware": {
27
- "type": "array",
28
- "description": "Enforcement software (formatters, test runners, etc.) to install and configure",
29
- "items": {
30
- "$ref": "#/definitions/EnforcementSoftware"
31
- }
32
- }
33
- },
34
- "required": ["sourceDirectory", "testsDirectory", "policies"],
35
- "additionalProperties": false,
36
- "definitions": {
37
- "Policy": {
38
- "type": "object",
39
- "properties": {
40
- "title": {
41
- "type": "string",
42
- "description": "Human-readable policy title"
43
- },
44
- "violations": {
45
- "type": "array",
46
- "description": "Violation rules for this policy",
47
- "items": {
48
- "$ref": "#/definitions/ViolationRule"
49
- }
50
- }
51
- },
52
- "required": ["title", "violations"],
53
- "additionalProperties": false
54
- },
55
- "ViolationRule": {
56
- "type": "object",
57
- "properties": {
58
- "message": {
59
- "type": "string",
60
- "description": "Violation message template with placeholders"
61
- },
62
- "cause": {
63
- "type": "string",
64
- "description": "Cause description template with placeholders"
65
- },
66
- "providers": {
67
- "type": "array",
68
- "description": "Provider pipeline for detecting violations",
69
- "items": {
70
- "$ref": "#/definitions/ProviderConfig"
71
- }
72
- }
73
- },
74
- "required": ["message", "cause", "providers"],
75
- "additionalProperties": false
76
- },
77
- "ProviderConfig": {
78
- "oneOf": [
79
- { "$ref": "#/definitions/IdentityProvider" },
80
- { "$ref": "#/definitions/FilterByFileProvider" },
81
- { "$ref": "#/definitions/FilterExcludeFunctionNamesProvider" },
82
- { "$ref": "#/definitions/FilterHasLiteralArgumentsProvider" },
83
- { "$ref": "#/definitions/FilterByDeclarationTypeProvider" }
84
- ]
85
- },
86
- "IdentityProvider": {
87
- "type": "object",
88
- "properties": {
89
- "type": { "const": "identity" },
90
- "source": {
91
- "enum": [
92
- "functionInvocations",
93
- "literals",
94
- "declarations",
95
- "typeDeclarations",
96
- "topLevelFunctions",
97
- "exports",
98
- "sequentialGroups"
99
- ]
100
- }
101
- },
102
- "required": ["type", "source"],
103
- "additionalProperties": false
104
- },
105
- "FilterByFileProvider": {
106
- "type": "object",
107
- "properties": {
108
- "type": { "const": "filter-by-file" },
109
- "patterns": {
110
- "type": "array",
111
- "items": { "type": "string" }
112
- }
113
- },
114
- "required": ["type", "patterns"],
115
- "additionalProperties": false
116
- },
117
- "FilterExcludeFunctionNamesProvider": {
118
- "type": "object",
119
- "properties": {
120
- "type": { "const": "filter-exclude-function-names" },
121
- "names": {
122
- "type": "array",
123
- "items": { "type": "string" }
124
- }
125
- },
126
- "required": ["type", "names"],
127
- "additionalProperties": false
128
- },
129
- "FilterHasLiteralArgumentsProvider": {
130
- "type": "object",
131
- "properties": {
132
- "type": { "const": "filter-has-literal-arguments" },
133
- "literalKinds": {
134
- "type": "array",
135
- "items": {
136
- "enum": ["string", "number", "boolean", "null", "object", "array"]
137
- }
138
- }
139
- },
140
- "required": ["type", "literalKinds"],
141
- "additionalProperties": false
142
- },
143
- "FilterByDeclarationTypeProvider": {
144
- "type": "object",
145
- "properties": {
146
- "type": { "const": "filter-by-declaration-type" },
147
- "declarationTypes": {
148
- "type": "array",
149
- "items": {
150
- "enum": ["interface", "type", "enum", "class", "function", "const", "let", "var"]
151
- }
152
- }
153
- },
154
- "required": ["type", "declarationTypes"],
155
- "additionalProperties": false
156
- },
157
- "EnforcementSoftware": {
158
- "type": "object",
159
- "properties": {
160
- "software": {
161
- "type": "object",
162
- "properties": {
163
- "pm": {
164
- "type": "string",
165
- "enum": ["npm"],
166
- "description": "Package manager (only npm for now)"
167
- },
168
- "name": {
169
- "type": "string",
170
- "description": "Package name (e.g., 'prettier', 'jest')"
171
- },
172
- "version": {
173
- "type": "string",
174
- "description": "Optional version constraint (e.g., '^3.0.0')"
175
- }
176
- },
177
- "required": ["pm", "name"],
178
- "additionalProperties": false
179
- },
180
- "configuration": {
181
- "oneOf": [
182
- {
183
- "type": "string",
184
- "description": "URL or file path to config"
185
- },
186
- {
187
- "type": "object",
188
- "description": "Inline configuration object"
189
- }
190
- ]
191
- }
192
- },
193
- "required": ["software", "configuration"],
194
- "additionalProperties": false
195
- }
196
- }
197
- }