@haibun/core 3.6.0 → 3.8.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 (88) hide show
  1. package/build/currentVersion.d.ts +1 -1
  2. package/build/currentVersion.js +1 -1
  3. package/build/lib/EventLogger.d.ts +6 -7
  4. package/build/lib/EventLogger.d.ts.map +1 -1
  5. package/build/lib/EventLogger.js +12 -33
  6. package/build/lib/EventLogger.js.map +1 -1
  7. package/build/lib/PhaseRunner.d.ts +16 -0
  8. package/build/lib/PhaseRunner.d.ts.map +1 -0
  9. package/build/lib/PhaseRunner.js +39 -0
  10. package/build/lib/PhaseRunner.js.map +1 -0
  11. package/build/lib/defs.d.ts +9 -11
  12. package/build/lib/defs.d.ts.map +1 -1
  13. package/build/lib/defs.js +8 -0
  14. package/build/lib/defs.js.map +1 -1
  15. package/build/lib/feature-variables.d.ts +10 -22
  16. package/build/lib/feature-variables.d.ts.map +1 -1
  17. package/build/lib/feature-variables.js +42 -58
  18. package/build/lib/feature-variables.js.map +1 -1
  19. package/build/lib/filter-schema.d.ts +49 -0
  20. package/build/lib/filter-schema.d.ts.map +1 -0
  21. package/build/lib/filter-schema.js +104 -0
  22. package/build/lib/filter-schema.js.map +1 -0
  23. package/build/lib/filter-types.d.ts +71 -0
  24. package/build/lib/filter-types.d.ts.map +1 -0
  25. package/build/lib/filter-types.js +121 -0
  26. package/build/lib/filter-types.js.map +1 -0
  27. package/build/lib/monitor-event-collector.d.ts +16 -0
  28. package/build/lib/monitor-event-collector.d.ts.map +1 -0
  29. package/build/lib/monitor-event-collector.js +26 -0
  30. package/build/lib/monitor-event-collector.js.map +1 -0
  31. package/build/lib/populateActionArgs.js +1 -1
  32. package/build/lib/populateActionArgs.js.map +1 -1
  33. package/build/lib/secrets.d.ts +17 -0
  34. package/build/lib/secrets.d.ts.map +1 -0
  35. package/build/lib/secrets.js +46 -0
  36. package/build/lib/secrets.js.map +1 -0
  37. package/build/lib/test/lib.js +3 -3
  38. package/build/lib/test/lib.js.map +1 -1
  39. package/build/lib/util/actualURI.d.ts +1 -1
  40. package/build/lib/util/actualURI.d.ts.map +1 -1
  41. package/build/lib/util/index.d.ts +1 -0
  42. package/build/lib/util/index.d.ts.map +1 -1
  43. package/build/lib/util/index.js +1 -0
  44. package/build/lib/util/index.js.map +1 -1
  45. package/build/lib/util/secret-utils.d.ts +7 -0
  46. package/build/lib/util/secret-utils.d.ts.map +1 -0
  47. package/build/lib/util/secret-utils.js +36 -0
  48. package/build/lib/util/secret-utils.js.map +1 -0
  49. package/build/phases/Executor.d.ts.map +1 -1
  50. package/build/phases/Executor.js +4 -6
  51. package/build/phases/Executor.js.map +1 -1
  52. package/build/phases/collector.d.ts +3 -2
  53. package/build/phases/collector.d.ts.map +1 -1
  54. package/build/phases/collector.js +19 -7
  55. package/build/phases/collector.js.map +1 -1
  56. package/build/run-policy/run-policy-schema.d.ts +44 -0
  57. package/build/run-policy/run-policy-schema.d.ts.map +1 -0
  58. package/build/run-policy/run-policy-schema.js +263 -0
  59. package/build/run-policy/run-policy-schema.js.map +1 -0
  60. package/build/run-policy/run-policy-types.d.ts +60 -0
  61. package/build/run-policy/run-policy-types.d.ts.map +1 -0
  62. package/build/run-policy/run-policy-types.js +106 -0
  63. package/build/run-policy/run-policy-types.js.map +1 -0
  64. package/build/runfilter/filter-schema.d.ts +76 -0
  65. package/build/runfilter/filter-schema.d.ts.map +1 -0
  66. package/build/runfilter/filter-schema.js +129 -0
  67. package/build/runfilter/filter-schema.js.map +1 -0
  68. package/build/runfilter/filter-types.d.ts +58 -0
  69. package/build/runfilter/filter-types.d.ts.map +1 -0
  70. package/build/runfilter/filter-types.js +102 -0
  71. package/build/runfilter/filter-types.js.map +1 -0
  72. package/build/runner.d.ts +0 -3
  73. package/build/runner.d.ts.map +1 -1
  74. package/build/runner.js +19 -52
  75. package/build/runner.js.map +1 -1
  76. package/build/schema/protocol.d.ts +2 -2
  77. package/build/steps/activities-stepper.d.ts +4 -4
  78. package/build/steps/activities-stepper.d.ts.map +1 -1
  79. package/build/steps/activities-stepper.js +0 -2
  80. package/build/steps/activities-stepper.js.map +1 -1
  81. package/build/steps/haibun.d.ts +4 -4
  82. package/build/steps/narrator.d.ts +4 -4
  83. package/build/steps/variables-stepper.d.ts +25 -25
  84. package/build/steps/variables-stepper.d.ts.map +1 -1
  85. package/build/steps/variables-stepper.js +45 -41
  86. package/build/steps/variables-stepper.js.map +1 -1
  87. package/haibun-core-specl.schema.json +42 -0
  88. package/package.json +6 -4
@@ -1,11 +1,3 @@
1
- /**
2
- * FeatureVariables - QuadStore-backed variable storage
3
- *
4
- * Domain IS the predicate: (varName, domainType, value, shared)
5
- * Example: (user_role, roles, "admin", shared)
6
- *
7
- * This enables semantic queries: queryQuads({ predicate: 'roles' })
8
- */
9
1
  import { isLiteralValue } from "./util/index.js";
10
2
  import { Origin } from '../schema/protocol.js';
11
3
  import { DOMAIN_JSON, DOMAIN_STRING, normalizeDomainKey } from "./domain-types.js";
@@ -13,6 +5,7 @@ import { QuadStore } from "./quad-store.js";
13
5
  export const SHARED_GRAPH = 'variables';
14
6
  export const META_GRAPH = 'meta';
15
7
  export const OBSERVATION_GRAPH = 'observation';
8
+ export const OBSCURED_VALUE = '[o̴b̵s̵c̷u̶r̸e̵d̵]';
16
9
  export class FeatureVariables {
17
10
  world;
18
11
  store;
@@ -29,7 +22,6 @@ export class FeatureVariables {
29
22
  }
30
23
  }
31
24
  }
32
- /** Get the underlying QuadStore for direct queries */
33
25
  getStore() {
34
26
  return this.store;
35
27
  }
@@ -70,20 +62,15 @@ export class FeatureVariables {
70
62
  if (domain === undefined) {
71
63
  throw Error(`Cannot set variable "${sv.term}": unknown domain "${sv.domain}"`);
72
64
  }
73
- // Auto-detect secret variables: if term contains "password" (case-insensitive), mark as secret
74
- const autoSecret = /password/i.test(sv.term);
75
- const normalized = { ...sv, domain: domainKey, secret: sv.secret || autoSecret };
65
+ const normalized = { ...sv, domain: domainKey };
76
66
  domain.coerce(normalized);
77
67
  const existingProvenance = this.values[sv.term]?.provenance;
78
68
  const provenances = existingProvenance ? [...existingProvenance, provenance] : [provenance];
79
- // Store in values map (keeps existing behavior)
80
69
  this.values[sv.term] = {
81
70
  ...normalized,
82
71
  provenance: provenances
83
72
  };
84
- // Store as quad with domain as predicate
85
73
  this.storeAsQuad(sv.term, { ...normalized, provenance: provenances }, namedGraph);
86
- // Emit quad observation event for real-time graph building
87
74
  const timestamp = Date.now();
88
75
  this.world.eventLogger?.emit({
89
76
  id: `quad-${timestamp}`,
@@ -96,14 +83,12 @@ export class FeatureVariables {
96
83
  json: {
97
84
  quadObservation: {
98
85
  subject: sv.term,
99
- predicate: domainKey, // Domain IS the predicate
100
- object: normalized.value,
86
+ predicate: domainKey,
87
+ object: this.isSecret(sv.term) ? OBSCURED_VALUE : normalized.value,
101
88
  namedGraph,
102
- // Move provenance to separate quads in meta namedGraph, don't embed
103
89
  }
104
90
  },
105
91
  });
106
- // Emit meta quads for origin/provenance/readonly if present
107
92
  if (sv.origin) {
108
93
  this.world.eventLogger?.emit({
109
94
  id: `quad-meta-origin-${timestamp}`,
@@ -124,33 +109,15 @@ export class FeatureVariables {
124
109
  });
125
110
  }
126
111
  }
127
- get(name) {
128
- if (!this.values[name])
129
- return undefined;
130
- const domainKey = normalizeDomainKey(this.values[name].domain);
131
- const domain = this.world.domains[domainKey];
132
- if (!domain) {
133
- throw Error(`Cannot read variable "${name}": unknown domain "${this.values[name].domain}"`);
134
- }
135
- const ret = domain.coerce({ ...this.values[name], domain: domainKey });
136
- return ret;
137
- }
138
- getJSON(name) {
139
- if (!this.values[name])
140
- return undefined;
141
- if (this.values[name].domain !== DOMAIN_JSON)
142
- throw Error(`${name} is ${this.values[name].domain}, not json`);
143
- return JSON.parse(this.values[name].value);
144
- }
145
112
  /**
146
113
  * Resolves a variable and its domain based on its actual origin.
114
+ * Requires explicit options.secure to return the real value of a secret.
147
115
  */
148
- resolveVariable(input, featureStep, steppers) {
116
+ resolveVariable(input, featureStep, steppers, options = { secure: false }) {
149
117
  const resolved = {
150
118
  term: input.term,
151
119
  value: undefined,
152
120
  };
153
- // Handle {varName} syntax - extract variable name from braces
154
121
  let lookupTerm = input.term;
155
122
  if (lookupTerm.startsWith('{') && lookupTerm.endsWith('}')) {
156
123
  lookupTerm = lookupTerm.slice(1, -1);
@@ -161,7 +128,7 @@ export class FeatureVariables {
161
128
  resolved.domain = input.domain;
162
129
  }
163
130
  else if (input.origin === Origin.env) {
164
- resolved.value = this.world.options.envVariables[lookupTerm]; // might be undefined
131
+ resolved.value = this.world.options.envVariables[lookupTerm];
165
132
  resolved.domain = DOMAIN_STRING;
166
133
  }
167
134
  else if (input.origin === Origin.var) {
@@ -169,6 +136,8 @@ export class FeatureVariables {
169
136
  resolved.domain = storedEntry.domain;
170
137
  resolved.value = storedEntry.value;
171
138
  resolved.provenance = storedEntry.provenance;
139
+ resolved.readonly = storedEntry.readonly;
140
+ resolved.secret = storedEntry.secret; // Propagate secret property
172
141
  }
173
142
  }
174
143
  else if (input.origin === Origin.defined) {
@@ -186,6 +155,7 @@ export class FeatureVariables {
186
155
  resolved.value = storedEntry.value;
187
156
  resolved.domain = storedEntry.domain;
188
157
  resolved.provenance = storedEntry.provenance;
158
+ resolved.readonly = storedEntry.readonly;
189
159
  resolved.origin = Origin.var;
190
160
  }
191
161
  else if (isLiteralValue(input.term)) {
@@ -208,6 +178,7 @@ export class FeatureVariables {
208
178
  resolved.value = storedEntry.value;
209
179
  resolved.domain = storedEntry.domain;
210
180
  resolved.provenance = storedEntry.provenance;
181
+ resolved.readonly = storedEntry.readonly;
211
182
  resolved.origin = Origin.var;
212
183
  }
213
184
  }
@@ -228,6 +199,9 @@ export class FeatureVariables {
228
199
  }
229
200
  resolved.value = domain.coerce({ ...resolved, domain: domainKey }, featureStep, steppers);
230
201
  resolved.domain = domainKey;
202
+ if (!options.secure && this.isSecret(input.term)) {
203
+ resolved.value = OBSCURED_VALUE;
204
+ }
231
205
  }
232
206
  return resolved;
233
207
  }
@@ -246,26 +220,19 @@ export class FeatureVariables {
246
220
  .map(v => v.value);
247
221
  return { values: memberValues };
248
222
  }
249
- // =========================================================================
250
- // QuadStore-specific methods for first-order logic integration
251
- // =========================================================================
252
- /**
253
- * Query quads. The predicate IS the domain type.
254
- * Example: queryQuads({ predicate: 'roles' }) to find all role-typed values.
255
- */
223
+ get(term, secure = false) {
224
+ return this.resolveVariable({ term, origin: Origin.defined }, undefined, undefined, { secure }).value;
225
+ }
256
226
  queryQuads(pattern) {
257
227
  const queryPattern = { ...pattern, namedGraph: pattern.namedGraph };
258
228
  return this.store.query(queryPattern);
259
229
  }
260
- /** Check existence of a quad */
261
230
  existsQuad(pattern) {
262
231
  return this.queryQuads(pattern).length > 0;
263
232
  }
264
- /** Count quads matching pattern */
265
233
  countQuads(pattern) {
266
234
  return this.queryQuads(pattern).length;
267
235
  }
268
- /** Add a quad directly (for non-variable observations like HTTP traces) */
269
236
  addQuad(quad) {
270
237
  this.store.add(quad);
271
238
  // Emit event for graph visualization
@@ -283,17 +250,38 @@ export class FeatureVariables {
283
250
  },
284
251
  });
285
252
  }
286
- /** Remove quads matching a pattern */
287
253
  removeQuad(pattern) {
288
254
  this.store.remove(pattern);
289
255
  }
290
- /** Get all quads */
291
256
  allQuads() {
292
257
  return this.store.all();
293
258
  }
294
- /** Check if a variable is marked as secret */
295
259
  isSecret(name) {
296
- return this.values[name]?.secret === true;
260
+ if (this.values[name]?.secret) {
261
+ return true;
262
+ }
263
+ if (this.values[name]?.secret === false) {
264
+ return false;
265
+ }
266
+ return /(password|secret)/i.test(name);
267
+ }
268
+ getSecrets() {
269
+ const secrets = {};
270
+ const envVars = this.world.options.envVariables;
271
+ for (const [key, value] of Object.entries(envVars)) {
272
+ if (this.isSecret(key)) {
273
+ secrets[key] = String(value);
274
+ }
275
+ }
276
+ for (const [key, variable] of Object.entries(this.all())) {
277
+ if (this.isSecret(key)) {
278
+ secrets[key] = String(variable.value);
279
+ }
280
+ }
281
+ return secrets;
282
+ }
283
+ getSecretValues() {
284
+ return Object.values(this.getSecrets());
297
285
  }
298
286
  // =========================================================================
299
287
  // Private helpers
@@ -302,7 +290,6 @@ export class FeatureVariables {
302
290
  const domainKey = normalizeDomainKey(sv.domain);
303
291
  // Domain IS the predicate: (name, domainType, value, shared)
304
292
  this.store.add({ subject: name, predicate: domainKey, object: sv.value, namedGraph });
305
- // Store metadata as separate quads in META namedGraph
306
293
  if (sv.origin) {
307
294
  this.store.add({ subject: name, predicate: 'origin', object: sv.origin, namedGraph: META_GRAPH });
308
295
  }
@@ -312,9 +299,6 @@ export class FeatureVariables {
312
299
  if (sv.readonly) {
313
300
  this.store.add({ subject: name, predicate: 'readonly', object: true, namedGraph: META_GRAPH });
314
301
  }
315
- if (sv.secret) {
316
- this.store.add({ subject: name, predicate: 'secret', object: true, namedGraph: META_GRAPH });
317
- }
318
302
  }
319
303
  }
320
304
  //# sourceMappingURL=feature-variables.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-variables.js","sourceRoot":"","sources":["../../src/lib/feature-variables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feature-variables.js","sourceRoot":"","sources":["../../src/lib/feature-variables.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { z } from 'zod';
2
+ import { type TFilterConfig } from './filter-types.js';
3
+ /**
4
+ * Zod schema for the filter policy JSON file.
5
+ *
6
+ * The JSON Schema file defines which env+dir+access combinations are allowed.
7
+ * Structure:
8
+ * {
9
+ * "environments": ["local", "dev", "test", "prod"],
10
+ * "directories": ["smoke", "api", "web", "regression"],
11
+ * "deny": [
12
+ * { "env": "prod", "access": "w" },
13
+ * { "env": "prod", "dir": "regression", "access": "a" }
14
+ * ]
15
+ * }
16
+ *
17
+ * - `environments`: valid environment names
18
+ * - `directories`: valid directory names
19
+ * - `deny`: rules that block specific combinations. Each rule matches when
20
+ * all specified fields match. Omitted fields match everything (wildcard).
21
+ */
22
+ export declare const FilterPolicySchema: z.ZodObject<{
23
+ environments: z.ZodArray<z.ZodString>;
24
+ directories: z.ZodArray<z.ZodString>;
25
+ deny: z.ZodDefault<z.ZodArray<z.ZodObject<{
26
+ env: z.ZodOptional<z.ZodString>;
27
+ dir: z.ZodOptional<z.ZodString>;
28
+ access: z.ZodOptional<z.ZodEnum<{
29
+ r: "r";
30
+ a: "a";
31
+ w: "w";
32
+ }>>;
33
+ }, z.core.$strip>>>;
34
+ }, z.core.$strip>;
35
+ export type TFilterPolicy = z.infer<typeof FilterPolicySchema>;
36
+ /**
37
+ * Load and parse a filter policy JSON file.
38
+ */
39
+ export declare function loadFilterPolicy(schemaPath: string): TFilterPolicy;
40
+ /**
41
+ * Validate a runtime filter config against a loaded filter policy.
42
+ * Returns an array of error messages (empty = valid).
43
+ */
44
+ export declare function validateFilterConfig(config: TFilterConfig, policy: TFilterPolicy): string[];
45
+ /**
46
+ * Load schema, validate config, and throw on failure.
47
+ */
48
+ export declare function loadAndValidateFilters(config: TFilterConfig): TFilterPolicy;
49
+ //# sourceMappingURL=filter-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-schema.d.ts","sourceRoot":"","sources":["../../src/lib/filter-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;iBAU7B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE/D;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAsBlE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAiC3F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAO3E"}
@@ -0,0 +1,104 @@
1
+ import { z } from 'zod';
2
+ import { readFileSync } from 'fs';
3
+ import { ACCESS_LEVELS } from './filter-types.js';
4
+ /**
5
+ * Zod schema for the filter policy JSON file.
6
+ *
7
+ * The JSON Schema file defines which env+dir+access combinations are allowed.
8
+ * Structure:
9
+ * {
10
+ * "environments": ["local", "dev", "test", "prod"],
11
+ * "directories": ["smoke", "api", "web", "regression"],
12
+ * "deny": [
13
+ * { "env": "prod", "access": "w" },
14
+ * { "env": "prod", "dir": "regression", "access": "a" }
15
+ * ]
16
+ * }
17
+ *
18
+ * - `environments`: valid environment names
19
+ * - `directories`: valid directory names
20
+ * - `deny`: rules that block specific combinations. Each rule matches when
21
+ * all specified fields match. Omitted fields match everything (wildcard).
22
+ */
23
+ export const FilterPolicySchema = z.object({
24
+ environments: z.array(z.string()).min(1),
25
+ directories: z.array(z.string()).min(1),
26
+ deny: z.array(z.object({
27
+ env: z.string().optional(),
28
+ dir: z.string().optional(),
29
+ access: z.enum(ACCESS_LEVELS).optional(),
30
+ })).default([]),
31
+ });
32
+ /**
33
+ * Load and parse a filter policy JSON file.
34
+ */
35
+ export function loadFilterPolicy(schemaPath) {
36
+ let raw;
37
+ try {
38
+ raw = readFileSync(schemaPath, 'utf-8');
39
+ }
40
+ catch (err) {
41
+ throw new Error(`Cannot read filter schema file "${schemaPath}": ${err.message}`);
42
+ }
43
+ let parsed;
44
+ try {
45
+ parsed = JSON.parse(raw);
46
+ }
47
+ catch {
48
+ throw new Error(`Filter schema file "${schemaPath}" is not valid JSON`);
49
+ }
50
+ const result = FilterPolicySchema.safeParse(parsed);
51
+ if (!result.success) {
52
+ const issues = result.error.issues.map((i) => ` ${i.path.join('.')}: ${i.message}`).join('\n');
53
+ throw new Error(`Filter schema file "${schemaPath}" has invalid structure:\n${issues}`);
54
+ }
55
+ return result.data;
56
+ }
57
+ /**
58
+ * Validate a runtime filter config against a loaded filter policy.
59
+ * Returns an array of error messages (empty = valid).
60
+ */
61
+ export function validateFilterConfig(config, policy) {
62
+ const errors = [];
63
+ // Validate environment
64
+ if (!policy.environments.includes(config.env)) {
65
+ errors.push(`Environment "${config.env}" is not allowed. Valid: ${policy.environments.join(', ')}`);
66
+ }
67
+ // Validate directories
68
+ for (const df of config.dirFilters) {
69
+ if (!policy.directories.includes(df.dir)) {
70
+ errors.push(`Directory "${df.dir}" is not allowed. Valid: ${policy.directories.join(', ')}`);
71
+ }
72
+ }
73
+ // Check deny rules
74
+ for (const rule of policy.deny) {
75
+ for (const df of config.dirFilters) {
76
+ const envMatch = !rule.env || rule.env === config.env;
77
+ const dirMatch = !rule.dir || rule.dir === df.dir;
78
+ const accessMatch = !rule.access || rule.access === df.access;
79
+ if (envMatch && dirMatch && accessMatch) {
80
+ const parts = [];
81
+ if (rule.env)
82
+ parts.push(`env=${rule.env}`);
83
+ if (rule.dir)
84
+ parts.push(`dir=${rule.dir}`);
85
+ if (rule.access)
86
+ parts.push(`access=${rule.access}`);
87
+ errors.push(`Denied by policy rule: ${parts.join(', ')} (matched ${df.dir}:${df.access} in ${config.env})`);
88
+ }
89
+ }
90
+ }
91
+ return errors;
92
+ }
93
+ /**
94
+ * Load schema, validate config, and throw on failure.
95
+ */
96
+ export function loadAndValidateFilters(config) {
97
+ const policy = loadFilterPolicy(config.schemaPath);
98
+ const errors = validateFilterConfig(config, policy);
99
+ if (errors.length > 0) {
100
+ throw new Error(`Filter validation failed:\n${errors.map((e) => ` • ${e}`).join('\n')}`);
101
+ }
102
+ return policy;
103
+ }
104
+ //# sourceMappingURL=filter-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-schema.js","sourceRoot":"","sources":["../../src/lib/filter-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { z } from 'zod';
2
+ /** CLI option name for filters */
3
+ export declare const OPTION_FILTERS = "--filters";
4
+ /** Environment variable for filters (format: "schema.json env dir:access,dir:access") */
5
+ export declare const HAIBUN_FILTERS = "HAIBUN_FILTERS";
6
+ /** Valid access levels, forming a strict hierarchy: r ⊂ a ⊂ w */
7
+ export declare const ACCESS_LEVELS: readonly ["r", "a", "w"];
8
+ /** Feature filename prefixes corresponding to access levels */
9
+ export declare const ACCESS_PREFIX_R = "r_";
10
+ export declare const ACCESS_PREFIX_A = "a_";
11
+ export declare const ACCESS_PREFIX_W = "w_";
12
+ export declare const ACCESS_PREFIXES: readonly ["r_", "a_", "w_"];
13
+ export type AccessLevel = (typeof ACCESS_LEVELS)[number];
14
+ export declare const AccessLevelSchema: z.ZodEnum<{
15
+ r: "r";
16
+ a: "a";
17
+ w: "w";
18
+ }>;
19
+ /** A single directory + access pair, e.g. "smoke:r" */
20
+ export type TDirFilter = {
21
+ dir: string;
22
+ access: AccessLevel;
23
+ };
24
+ /** Parsed --filters configuration */
25
+ export type TFilterConfig = {
26
+ schemaPath: string;
27
+ env: string;
28
+ dirFilters: TDirFilter[];
29
+ };
30
+ /**
31
+ * Parse the dir:access,dir:access string into TDirFilter[].
32
+ * E.g. "smoke:r,api:a" → [{ dir: "smoke", access: "r" }, { dir: "api", access: "a" }]
33
+ */
34
+ export declare function parseDirFilters(input: string): TDirFilter[];
35
+ /**
36
+ * Parse --filters arguments: schemaPath env dir:access[,dir:access]
37
+ */
38
+ export declare function parseFilterArgs(schemaPath: string, env: string, dirAccessStr: string): TFilterConfig;
39
+ /**
40
+ * Parse HAIBUN_FILTERS env var value: "schema.json env dir:access,dir:access"
41
+ */
42
+ export declare function parseFilterEnv(value: string): TFilterConfig;
43
+ /**
44
+ * Returns the numeric rank of an access level for comparison.
45
+ * r=0, a=1, w=2
46
+ */
47
+ export declare function accessRank(level: AccessLevel): number;
48
+ /**
49
+ * Check if a granted access level includes the required level.
50
+ * Access levels are cumulative: w includes a includes r.
51
+ */
52
+ export declare function accessLevelIncludes(granted: AccessLevel, required: AccessLevel): boolean;
53
+ /**
54
+ * Extract the access prefix from a feature filename.
55
+ * Returns the access level if the file starts with r_, a_, or w_.
56
+ * Returns undefined for unprefixed/unrecognized files (they will be skipped).
57
+ */
58
+ export declare function getFeatureAccessPrefix(filename: string): AccessLevel | undefined;
59
+ /**
60
+ * Determine if a feature file should run given the active filters.
61
+ *
62
+ * - Unprefixed/unrecognized files are silently skipped (returns false).
63
+ * - Files whose access prefix exceeds the granted level are skipped.
64
+ * - Files in directories not listed in the filters are skipped.
65
+ *
66
+ * @param featurePath - relative path from features root, e.g. "/smoke/r_health.feature"
67
+ * @param dirFilters - active directory filters
68
+ * @returns true if the feature should execute
69
+ */
70
+ export declare function featureMatchesFilter(featurePath: string, dirFilters: TDirFilter[]): boolean;
71
+ //# sourceMappingURL=filter-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-types.d.ts","sourceRoot":"","sources":["../../src/lib/filter-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,kCAAkC;AAClC,eAAO,MAAM,cAAc,cAAc,CAAC;AAE1C,yFAAyF;AACzF,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,iEAAiE;AACjE,eAAO,MAAM,aAAa,0BAA2B,CAAC;AAEtD,+DAA+D;AAC/D,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC,eAAO,MAAM,eAAe,6BAA+D,CAAC;AAM5F,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AACzD,eAAO,MAAM,iBAAiB;;;;EAAwB,CAAC;AAEvD,uDAAuD;AACvD,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,WAAW,CAAC;CACrB,CAAC;AAEF,qCAAqC;AACrC,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,UAAU,EAAE,CAAC;CAC1B,CAAC;AAMF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAY3D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,aAAa,CAUpG;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAM3D;AAMD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAErD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAExF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAKhF;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,OAAO,CAe3F"}
@@ -0,0 +1,121 @@
1
+ import { z } from 'zod';
2
+ // ============================================================================
3
+ // Constants
4
+ // ============================================================================
5
+ /** CLI option name for filters */
6
+ export const OPTION_FILTERS = '--filters';
7
+ /** Environment variable for filters (format: "schema.json env dir:access,dir:access") */
8
+ export const HAIBUN_FILTERS = 'HAIBUN_FILTERS';
9
+ /** Valid access levels, forming a strict hierarchy: r ⊂ a ⊂ w */
10
+ export const ACCESS_LEVELS = ['r', 'a', 'w'];
11
+ /** Feature filename prefixes corresponding to access levels */
12
+ export const ACCESS_PREFIX_R = 'r_';
13
+ export const ACCESS_PREFIX_A = 'a_';
14
+ export const ACCESS_PREFIX_W = 'w_';
15
+ export const ACCESS_PREFIXES = [ACCESS_PREFIX_R, ACCESS_PREFIX_A, ACCESS_PREFIX_W];
16
+ export const AccessLevelSchema = z.enum(ACCESS_LEVELS);
17
+ // ============================================================================
18
+ // Parsing
19
+ // ============================================================================
20
+ /**
21
+ * Parse the dir:access,dir:access string into TDirFilter[].
22
+ * E.g. "smoke:r,api:a" → [{ dir: "smoke", access: "r" }, { dir: "api", access: "a" }]
23
+ */
24
+ export function parseDirFilters(input) {
25
+ return input.split(',').map((pair) => {
26
+ const [dir, accessStr] = pair.split(':');
27
+ if (!dir || !accessStr) {
28
+ throw new Error(`Invalid dir:access pair "${pair}". Expected format: dir:access (e.g. smoke:r)`);
29
+ }
30
+ const parsed = AccessLevelSchema.safeParse(accessStr);
31
+ if (!parsed.success) {
32
+ throw new Error(`Invalid access level "${accessStr}" in "${pair}". Must be one of: ${ACCESS_LEVELS.join(', ')}`);
33
+ }
34
+ return { dir, access: parsed.data };
35
+ });
36
+ }
37
+ /**
38
+ * Parse --filters arguments: schemaPath env dir:access[,dir:access]
39
+ */
40
+ export function parseFilterArgs(schemaPath, env, dirAccessStr) {
41
+ if (!schemaPath)
42
+ throw new Error(`${OPTION_FILTERS} requires a schema path`);
43
+ if (!env)
44
+ throw new Error(`${OPTION_FILTERS} requires an environment`);
45
+ if (!dirAccessStr)
46
+ throw new Error(`${OPTION_FILTERS} requires dir:access pairs`);
47
+ return {
48
+ schemaPath,
49
+ env,
50
+ dirFilters: parseDirFilters(dirAccessStr),
51
+ };
52
+ }
53
+ /**
54
+ * Parse HAIBUN_FILTERS env var value: "schema.json env dir:access,dir:access"
55
+ */
56
+ export function parseFilterEnv(value) {
57
+ const parts = value.trim().split(/\s+/);
58
+ if (parts.length !== 3) {
59
+ throw new Error(`${HAIBUN_FILTERS} must have 3 space-separated parts: "schema env dir:access[,dir:access]" (got ${parts.length})`);
60
+ }
61
+ return parseFilterArgs(parts[0], parts[1], parts[2]);
62
+ }
63
+ // ============================================================================
64
+ // Access Level Logic
65
+ // ============================================================================
66
+ /**
67
+ * Returns the numeric rank of an access level for comparison.
68
+ * r=0, a=1, w=2
69
+ */
70
+ export function accessRank(level) {
71
+ return ACCESS_LEVELS.indexOf(level);
72
+ }
73
+ /**
74
+ * Check if a granted access level includes the required level.
75
+ * Access levels are cumulative: w includes a includes r.
76
+ */
77
+ export function accessLevelIncludes(granted, required) {
78
+ return accessRank(granted) >= accessRank(required);
79
+ }
80
+ /**
81
+ * Extract the access prefix from a feature filename.
82
+ * Returns the access level if the file starts with r_, a_, or w_.
83
+ * Returns undefined for unprefixed/unrecognized files (they will be skipped).
84
+ */
85
+ export function getFeatureAccessPrefix(filename) {
86
+ const match = filename.match(/^([raw])_/);
87
+ if (!match)
88
+ return undefined;
89
+ const parsed = AccessLevelSchema.safeParse(match[1]);
90
+ return parsed.success ? parsed.data : undefined;
91
+ }
92
+ // ============================================================================
93
+ // Feature Matching
94
+ // ============================================================================
95
+ /**
96
+ * Determine if a feature file should run given the active filters.
97
+ *
98
+ * - Unprefixed/unrecognized files are silently skipped (returns false).
99
+ * - Files whose access prefix exceeds the granted level are skipped.
100
+ * - Files in directories not listed in the filters are skipped.
101
+ *
102
+ * @param featurePath - relative path from features root, e.g. "/smoke/r_health.feature"
103
+ * @param dirFilters - active directory filters
104
+ * @returns true if the feature should execute
105
+ */
106
+ export function featureMatchesFilter(featurePath, dirFilters) {
107
+ const parts = featurePath.replace(/^\//, '').split('/');
108
+ const filename = parts[parts.length - 1];
109
+ const featureDir = parts.length > 1 ? parts[0] : undefined;
110
+ // Unrecognized prefix → skip silently
111
+ const requiredAccess = getFeatureAccessPrefix(filename);
112
+ if (!requiredAccess)
113
+ return false;
114
+ // No matching directory filter → skip
115
+ const matchingFilter = dirFilters.find((f) => f.dir === featureDir);
116
+ if (!matchingFilter)
117
+ return false;
118
+ // Check access hierarchy
119
+ return accessLevelIncludes(matchingFilter.access, requiredAccess);
120
+ }
121
+ //# sourceMappingURL=filter-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter-types.js","sourceRoot":"","sources":["../../src/lib/filter-types.ts"],"names":[],"mappings":"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"}