@ticatec/omniflow-core 0.1.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 (75) hide show
  1. package/README.md +264 -0
  2. package/README_CN.md +265 -0
  3. package/dist/context/index.d.ts +27 -0
  4. package/dist/context/index.d.ts.map +1 -0
  5. package/dist/context/index.js +62 -0
  6. package/dist/context/index.js.map +1 -0
  7. package/dist/context/storage.d.ts +8 -0
  8. package/dist/context/storage.d.ts.map +1 -0
  9. package/dist/context/storage.js +7 -0
  10. package/dist/context/storage.js.map +1 -0
  11. package/dist/context/types.d.ts +64 -0
  12. package/dist/context/types.d.ts.map +1 -0
  13. package/dist/context/types.js +5 -0
  14. package/dist/context/types.js.map +1 -0
  15. package/dist/index.d.ts +15 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +19 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/primitives/docker.d.ts +41 -0
  20. package/dist/primitives/docker.d.ts.map +1 -0
  21. package/dist/primitives/docker.js +109 -0
  22. package/dist/primitives/docker.js.map +1 -0
  23. package/dist/primitives/git.d.ts +19 -0
  24. package/dist/primitives/git.d.ts.map +1 -0
  25. package/dist/primitives/git.js +84 -0
  26. package/dist/primitives/git.js.map +1 -0
  27. package/dist/primitives/index.d.ts +5 -0
  28. package/dist/primitives/index.d.ts.map +1 -0
  29. package/dist/primitives/index.js +5 -0
  30. package/dist/primitives/index.js.map +1 -0
  31. package/dist/primitives/shell.d.ts +42 -0
  32. package/dist/primitives/shell.d.ts.map +1 -0
  33. package/dist/primitives/shell.js +141 -0
  34. package/dist/primitives/shell.js.map +1 -0
  35. package/dist/primitives/ssh.d.ts +41 -0
  36. package/dist/primitives/ssh.d.ts.map +1 -0
  37. package/dist/primitives/ssh.js +128 -0
  38. package/dist/primitives/ssh.js.map +1 -0
  39. package/dist/toolchain/index.d.ts +7 -0
  40. package/dist/toolchain/index.d.ts.map +1 -0
  41. package/dist/toolchain/index.js +7 -0
  42. package/dist/toolchain/index.js.map +1 -0
  43. package/dist/toolchain/providers/GradleToolchain.d.ts +15 -0
  44. package/dist/toolchain/providers/GradleToolchain.d.ts.map +1 -0
  45. package/dist/toolchain/providers/GradleToolchain.js +130 -0
  46. package/dist/toolchain/providers/GradleToolchain.js.map +1 -0
  47. package/dist/toolchain/providers/MavenToolchain.d.ts +12 -0
  48. package/dist/toolchain/providers/MavenToolchain.d.ts.map +1 -0
  49. package/dist/toolchain/providers/MavenToolchain.js +57 -0
  50. package/dist/toolchain/providers/MavenToolchain.js.map +1 -0
  51. package/dist/toolchain/providers/NodeToolchain.d.ts +15 -0
  52. package/dist/toolchain/providers/NodeToolchain.d.ts.map +1 -0
  53. package/dist/toolchain/providers/NodeToolchain.js +93 -0
  54. package/dist/toolchain/providers/NodeToolchain.js.map +1 -0
  55. package/dist/toolchain/providers/pom.d.ts +18 -0
  56. package/dist/toolchain/providers/pom.d.ts.map +1 -0
  57. package/dist/toolchain/providers/pom.js +112 -0
  58. package/dist/toolchain/providers/pom.js.map +1 -0
  59. package/dist/toolchain/registry.d.ts +48 -0
  60. package/dist/toolchain/registry.d.ts.map +1 -0
  61. package/dist/toolchain/registry.js +97 -0
  62. package/dist/toolchain/registry.js.map +1 -0
  63. package/dist/toolchain/types.d.ts +33 -0
  64. package/dist/toolchain/types.d.ts.map +1 -0
  65. package/dist/toolchain/types.js +5 -0
  66. package/dist/toolchain/types.js.map +1 -0
  67. package/dist/utils/mask.d.ts +15 -0
  68. package/dist/utils/mask.d.ts.map +1 -0
  69. package/dist/utils/mask.js +50 -0
  70. package/dist/utils/mask.js.map +1 -0
  71. package/dist/utils/template.d.ts +12 -0
  72. package/dist/utils/template.d.ts.map +1 -0
  73. package/dist/utils/template.js +55 -0
  74. package/dist/utils/template.js.map +1 -0
  75. package/package.json +57 -0
@@ -0,0 +1,112 @@
1
+ /**
2
+ * XML parsing helper for reading coordinates out of a pom.xml without general XML parser dependencies.
3
+ */
4
+ const ENTITIES = {
5
+ '&lt;': '<',
6
+ '&gt;': '>',
7
+ '&amp;': '&',
8
+ '&quot;': '"',
9
+ '&apos;': "'"
10
+ };
11
+ function decodeEntities(text) {
12
+ return text.replace(/&(?:lt|gt|amp|quot|apos|#\d+|#x[0-9a-fA-F]+);/g, match => {
13
+ if (ENTITIES[match])
14
+ return ENTITIES[match];
15
+ const numeric = match.startsWith('&#x') || match.startsWith('&#X')
16
+ ? parseInt(match.slice(3, -1), 16)
17
+ : parseInt(match.slice(2, -1), 10);
18
+ return Number.isFinite(numeric) ? String.fromCodePoint(numeric) : match;
19
+ });
20
+ }
21
+ function stripNoise(xml) {
22
+ return xml
23
+ .replace(/<\?[\s\S]*?\?>/g, '')
24
+ .replace(/<!--[\s\S]*?-->/g, '')
25
+ .replace(/<!DOCTYPE[^>[]*(\[[\s\S]*?\])?[^>]*>/gi, '')
26
+ .replace(/<!\[CDATA\[([\s\S]*?)\]\]>/g, (_, body) => body.replace(/&/g, '&amp;').replace(/</g, '&lt;'));
27
+ }
28
+ export function parseXml(xml) {
29
+ const source = stripNoise(xml);
30
+ const tag = /<\s*(\/?)\s*([A-Za-z_][\w.:-]*)((?:"[^"]*"|'[^']*'|[^>"'])*?)(\/?)\s*>/g;
31
+ let root;
32
+ const stack = [];
33
+ let textFrom = 0;
34
+ let match;
35
+ const addText = (upTo) => {
36
+ const top = stack[stack.length - 1];
37
+ if (!top)
38
+ return;
39
+ top.node.text += source.slice(textFrom, upTo);
40
+ };
41
+ while ((match = tag.exec(source)) !== null) {
42
+ const [whole, closing, name, , selfClosing] = match;
43
+ addText(match.index);
44
+ textFrom = match.index + whole.length;
45
+ if (closing) {
46
+ const open = stack.pop();
47
+ if (!open || open.name !== name) {
48
+ throw new Error(`Malformed XML: </${name}> does not close <${open?.name ?? 'nothing'}>`);
49
+ }
50
+ continue;
51
+ }
52
+ const node = { text: '', children: {} };
53
+ const entry = { name, node };
54
+ const parent = stack[stack.length - 1];
55
+ if (parent) {
56
+ ;
57
+ (parent.node.children[name] ??= []).push(node);
58
+ }
59
+ else if (root) {
60
+ break;
61
+ }
62
+ else {
63
+ root = entry;
64
+ }
65
+ if (!selfClosing)
66
+ stack.push(entry);
67
+ }
68
+ if (!root)
69
+ throw new Error('Malformed XML: no root element');
70
+ return root;
71
+ }
72
+ function childText(node, name) {
73
+ const child = node.children[name]?.[0];
74
+ if (!child)
75
+ return undefined;
76
+ const text = decodeEntities(child.text).trim();
77
+ return text || undefined;
78
+ }
79
+ function properties(project) {
80
+ const out = {};
81
+ const block = project.children['properties']?.[0];
82
+ if (!block)
83
+ return out;
84
+ for (const [name, nodes] of Object.entries(block.children)) {
85
+ const text = decodeEntities(nodes[0].text).trim();
86
+ if (text)
87
+ out[name] = text;
88
+ }
89
+ return out;
90
+ }
91
+ function expand(value, vars) {
92
+ let out = value;
93
+ for (let depth = 0; depth < 5 && out.includes('${'); depth++) {
94
+ const next = out.replace(/\$\{([^}]+)\}/g, (whole, name) => vars[name] ?? whole);
95
+ if (next === out)
96
+ break;
97
+ out = next;
98
+ }
99
+ return out;
100
+ }
101
+ export function readPom(xml) {
102
+ const { node: project } = parseXml(xml);
103
+ const parent = project.children['parent']?.[0];
104
+ const vars = properties(project);
105
+ const resolve = (value) => value === undefined ? undefined : expand(value, vars);
106
+ return {
107
+ groupId: resolve(childText(project, 'groupId') ?? (parent && childText(parent, 'groupId'))),
108
+ artifactId: resolve(childText(project, 'artifactId')),
109
+ version: resolve(childText(project, 'version') ?? (parent && childText(parent, 'version')))
110
+ };
111
+ }
112
+ //# sourceMappingURL=pom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pom.js","sourceRoot":"","sources":["../../../src/toolchain/providers/pom.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { ToolchainProvider, DetectionResult } from './types.js';
2
+ export declare class ToolchainRegistry {
3
+ private providers;
4
+ constructor(registerDefaults?: boolean);
5
+ private registerDefaultProviders;
6
+ /**
7
+ * Register a new or overriding ToolchainProvider.
8
+ */
9
+ register(provider: ToolchainProvider): void;
10
+ /**
11
+ * Remove a registered provider by name.
12
+ */
13
+ unregister(name: string): boolean;
14
+ /**
15
+ * Look up a registered provider by name.
16
+ */
17
+ get(name: string): ToolchainProvider | undefined;
18
+ /**
19
+ * List all registered providers sorted by priority (highest first).
20
+ */
21
+ list(): ToolchainProvider[];
22
+ /**
23
+ * Detect which toolchain matches the directory.
24
+ */
25
+ detect(projectDir: string): Promise<{
26
+ provider: ToolchainProvider;
27
+ detection: DetectionResult;
28
+ } | null>;
29
+ /**
30
+ * Resolve a toolchain for a directory, respecting an optional preferred toolchain name fallback.
31
+ */
32
+ resolve(projectDir: string, preferredName?: string): Promise<{
33
+ provider: ToolchainProvider;
34
+ detection: DetectionResult;
35
+ }>;
36
+ /**
37
+ * Reset registry to defaults.
38
+ */
39
+ reset(): void;
40
+ }
41
+ /** Global default ToolchainRegistry singleton */
42
+ export declare const defaultToolchainRegistry: ToolchainRegistry;
43
+ export declare function registerToolchain(provider: ToolchainProvider): void;
44
+ export declare function resolveToolchain(projectDir: string, preferredName?: string): Promise<{
45
+ provider: ToolchainProvider;
46
+ detection: DetectionResult;
47
+ }>;
48
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/toolchain/registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEpE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,SAAS,CAA4C;gBAEjD,gBAAgB,UAAO;IAMnC,OAAO,CAAC,wBAAwB;IAOhC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAI3C;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAShD;;OAEG;IACH,IAAI,IAAI,iBAAiB,EAAE;IAM3B;;OAEG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,iBAAiB,CAAC;QAAC,SAAS,EAAE,eAAe,CAAA;KAAE,GAAG,IAAI,CAAC;IAW7G;;OAEG;IACG,OAAO,CACX,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC;QAAE,QAAQ,EAAE,iBAAiB,CAAC;QAAC,SAAS,EAAE,eAAe,CAAA;KAAE,CAAC;IAyBvE;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAED,iDAAiD;AACjD,eAAO,MAAM,wBAAwB,mBAA0B,CAAA;AAE/D,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAEnE;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC;IAAE,QAAQ,EAAE,iBAAiB,CAAC;IAAC,SAAS,EAAE,eAAe,CAAA;CAAE,CAAC,CAEtE"}
@@ -0,0 +1,97 @@
1
+ import { MavenToolchain } from './providers/MavenToolchain.js';
2
+ import { GradleToolchain } from './providers/GradleToolchain.js';
3
+ import { NodeToolchain } from './providers/NodeToolchain.js';
4
+ export class ToolchainRegistry {
5
+ providers = new Map();
6
+ constructor(registerDefaults = true) {
7
+ if (registerDefaults) {
8
+ this.registerDefaultProviders();
9
+ }
10
+ }
11
+ registerDefaultProviders() {
12
+ // Built-in order: Maven, Gradle, Node
13
+ this.register(new MavenToolchain());
14
+ this.register(new GradleToolchain());
15
+ this.register(new NodeToolchain());
16
+ }
17
+ /**
18
+ * Register a new or overriding ToolchainProvider.
19
+ */
20
+ register(provider) {
21
+ this.providers.set(provider.name, provider);
22
+ }
23
+ /**
24
+ * Remove a registered provider by name.
25
+ */
26
+ unregister(name) {
27
+ return this.providers.delete(name);
28
+ }
29
+ /**
30
+ * Look up a registered provider by name.
31
+ */
32
+ get(name) {
33
+ const direct = this.providers.get(name);
34
+ if (direct)
35
+ return direct;
36
+ if (['pnpm', 'npm', 'yarn', 'bun'].includes(name)) {
37
+ return new NodeToolchain(name);
38
+ }
39
+ return undefined;
40
+ }
41
+ /**
42
+ * List all registered providers sorted by priority (highest first).
43
+ */
44
+ list() {
45
+ return Array.from(this.providers.values()).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
46
+ }
47
+ /**
48
+ * Detect which toolchain matches the directory.
49
+ */
50
+ async detect(projectDir) {
51
+ const sorted = this.list();
52
+ for (const provider of sorted) {
53
+ const detection = await provider.detect(projectDir);
54
+ if (detection) {
55
+ return { provider, detection };
56
+ }
57
+ }
58
+ return null;
59
+ }
60
+ /**
61
+ * Resolve a toolchain for a directory, respecting an optional preferred toolchain name fallback.
62
+ */
63
+ async resolve(projectDir, preferredName) {
64
+ const detected = await this.detect(projectDir);
65
+ if (detected) {
66
+ return detected;
67
+ }
68
+ if (preferredName) {
69
+ const provider = this.get(preferredName);
70
+ if (!provider) {
71
+ throw new Error(`Preferred toolchain '${preferredName}' is not registered. Available: ${Array.from(this.providers.keys()).join(', ')}`);
72
+ }
73
+ return {
74
+ provider,
75
+ detection: { name: preferredName, reason: `configured default (${preferredName})` }
76
+ };
77
+ }
78
+ throw new Error(`Could not determine toolchain for directory '${projectDir}'. ` +
79
+ `No pom.xml, build.gradle, or package.json found, and no matching registered toolchain detected.`);
80
+ }
81
+ /**
82
+ * Reset registry to defaults.
83
+ */
84
+ reset() {
85
+ this.providers.clear();
86
+ this.registerDefaultProviders();
87
+ }
88
+ }
89
+ /** Global default ToolchainRegistry singleton */
90
+ export const defaultToolchainRegistry = new ToolchainRegistry();
91
+ export function registerToolchain(provider) {
92
+ defaultToolchainRegistry.register(provider);
93
+ }
94
+ export function resolveToolchain(projectDir, preferredName) {
95
+ return defaultToolchainRegistry.resolve(projectDir, preferredName);
96
+ }
97
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/toolchain/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Toolchain SPI definitions for project type detection and build execution.
3
+ */
4
+ export interface ProjectInfo {
5
+ name: string;
6
+ version: string;
7
+ fullName: string;
8
+ namespace?: string;
9
+ }
10
+ export interface DetectionResult {
11
+ name: string;
12
+ reason: string;
13
+ }
14
+ export interface ToolchainProvider {
15
+ /** Identifier of this toolchain, e.g. 'maven', 'gradle', 'node', 'go' */
16
+ readonly name: string;
17
+ /**
18
+ * Detection and resolution priority. Higher priority is checked earlier.
19
+ * Enables custom plugins to override built-in toolchains.
20
+ */
21
+ readonly priority?: number;
22
+ /** Check if a project directory matches this toolchain */
23
+ detect(projectDir: string): Promise<DetectionResult | null>;
24
+ /** Extract project identity (name, version) from project manifests */
25
+ projectInfo(projectDir: string): Promise<ProjectInfo>;
26
+ /** Install or fetch dependencies */
27
+ install(projectDir: string, flags?: string[]): Promise<void>;
28
+ /** Run the primary build/package task */
29
+ build(projectDir: string, flags?: string[]): Promise<void>;
30
+ /** Run an arbitrary task or script */
31
+ run?(projectDir: string, task: string, flags?: string[]): Promise<void>;
32
+ }
33
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/toolchain/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAE1B,0DAA0D;IAC1D,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAA;IAE3D,sEAAsE;IACtE,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IAErD,oCAAoC;IACpC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE5D,yCAAyC;IACzC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAE1D,sCAAsC;IACtC,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACxE"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Toolchain SPI definitions for project type detection and build execution.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/toolchain/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Secret masking heuristics and masking stream utilities.
3
+ */
4
+ export declare const MASK = "********";
5
+ /** Does this variable or key name suggest its value is a secret? */
6
+ export declare function isSecretKey(key: string): boolean;
7
+ /**
8
+ * Mask secret substrings within a string log line.
9
+ */
10
+ export declare function maskString(text: string, secretValues: string[]): string;
11
+ /**
12
+ * Recursively mask values of secret-looking keys in an object.
13
+ */
14
+ export declare function maskObject<T>(obj: T): T;
15
+ //# sourceMappingURL=mask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mask.d.ts","sourceRoot":"","sources":["../../src/utils/mask.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,IAAI,aAAa,CAAA;AAK9B,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGhD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CASvE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAkBvC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Secret masking heuristics and masking stream utilities.
3
+ */
4
+ export const MASK = '********';
5
+ const SECRET_NAME = /(PASSWORD|PASSWD|PASS|SECRET|TOKEN|CREDENTIAL|PRIVATE|APIKEY|_KEY|^KEY$|KEY$|AUTH|SIGNATURE)/i;
6
+ const LOCATION_NAME = /(_FILE|_PATH|_DIR|_DIRECTORY|_URL|_URI|_LOCATION|_NAME|_ID)$/i;
7
+ /** Does this variable or key name suggest its value is a secret? */
8
+ export function isSecretKey(key) {
9
+ if (LOCATION_NAME.test(key))
10
+ return false;
11
+ return SECRET_NAME.test(key);
12
+ }
13
+ /**
14
+ * Mask secret substrings within a string log line.
15
+ */
16
+ export function maskString(text, secretValues) {
17
+ if (!text || secretValues.length === 0)
18
+ return text;
19
+ let result = text;
20
+ for (const secret of secretValues) {
21
+ if (secret && secret.length >= 3) {
22
+ result = result.replaceAll(secret, MASK);
23
+ }
24
+ }
25
+ return result;
26
+ }
27
+ /**
28
+ * Recursively mask values of secret-looking keys in an object.
29
+ */
30
+ export function maskObject(obj) {
31
+ if (obj === null || typeof obj !== 'object')
32
+ return obj;
33
+ if (Array.isArray(obj)) {
34
+ return obj.map(item => maskObject(item));
35
+ }
36
+ const output = {};
37
+ for (const [key, value] of Object.entries(obj)) {
38
+ if (isSecretKey(key) && typeof value === 'string' && value.length > 0) {
39
+ output[key] = MASK;
40
+ }
41
+ else if (typeof value === 'object' && value !== null) {
42
+ output[key] = maskObject(value);
43
+ }
44
+ else {
45
+ output[key] = value;
46
+ }
47
+ }
48
+ return output;
49
+ }
50
+ //# sourceMappingURL=mask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mask.js","sourceRoot":"","sources":["../../src/utils/mask.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAA;AAE9B,MAAM,WAAW,GAAG,+FAA+F,CAAA;AACnH,MAAM,aAAa,GAAG,+DAA+D,CAAA;AAErF,oEAAoE;AACpE,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IACzC,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,YAAsB;IAC7D,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACnD,IAAI,MAAM,GAAG,IAAI,CAAA;IACjB,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAI,GAAM;IAClC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAA;IAEvD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAiB,CAAA;IAC1D,CAAC;IAED,MAAM,MAAM,GAA4B,EAAE,CAAA;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;QACpB,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACvD,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACrB,CAAC;IACH,CAAC;IACD,OAAO,MAAW,CAAA;AACpB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Utilities for template string interpolation into command arguments.
3
+ */
4
+ /**
5
+ * Turn a tagged template into an argument list (argv).
6
+ *
7
+ * Whitespace in literal parts separates arguments, whereas an interpolated value
8
+ * is preserved as a single argument regardless of whitespace or special characters.
9
+ * Array values expand into one argument per element.
10
+ */
11
+ export declare function templateToArgv(strings: readonly string[], values: readonly unknown[]): string[];
12
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,EAAE,CAkD/F"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Utilities for template string interpolation into command arguments.
3
+ */
4
+ /**
5
+ * Turn a tagged template into an argument list (argv).
6
+ *
7
+ * Whitespace in literal parts separates arguments, whereas an interpolated value
8
+ * is preserved as a single argument regardless of whitespace or special characters.
9
+ * Array values expand into one argument per element.
10
+ */
11
+ export function templateToArgv(strings, values) {
12
+ const argv = [];
13
+ let token = '';
14
+ let started = false;
15
+ const flush = () => {
16
+ if (started) {
17
+ argv.push(token);
18
+ token = '';
19
+ started = false;
20
+ }
21
+ };
22
+ const append = (value) => {
23
+ token += value;
24
+ started = true;
25
+ };
26
+ for (let i = 0; i < strings.length; i++) {
27
+ for (const char of strings[i]) {
28
+ if (char === ' ' || char === '\t' || char === '\n' || char === '\r') {
29
+ flush();
30
+ }
31
+ else {
32
+ append(char);
33
+ }
34
+ }
35
+ if (i < values.length) {
36
+ const value = values[i];
37
+ if (value === undefined || value === null) {
38
+ throw new Error(`Command interpolation contains ${value === null ? 'null' : 'undefined'} ` +
39
+ `(value at index ${i}). Verify your variables are configured.`);
40
+ }
41
+ if (Array.isArray(value)) {
42
+ flush();
43
+ for (const item of value) {
44
+ argv.push(String(item));
45
+ }
46
+ }
47
+ else {
48
+ append(String(value));
49
+ }
50
+ }
51
+ }
52
+ flush();
53
+ return argv;
54
+ }
55
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,OAA0B,EAAE,MAA0B;IACnF,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,IAAI,OAAO,GAAG,KAAK,CAAA;IAEnB,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAChB,KAAK,GAAG,EAAE,CAAA;YACV,OAAO,GAAG,KAAK,CAAA;QACjB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;QAC/B,KAAK,IAAI,KAAK,CAAA;QACd,OAAO,GAAG,IAAI,CAAA;IAChB,CAAC,CAAA;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9B,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACpE,KAAK,EAAE,CAAA;YACT,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,CAAA;YACd,CAAC;QACH,CAAC;QAED,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YAEvB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CACb,kCAAkC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,GAAG;oBAC1E,mBAAmB,CAAC,0CAA0C,CAC/D,CAAA;YACH,CAAC;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,KAAK,EAAE,CAAA;gBACP,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;gBACzB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,EAAE,CAAA;IACP,OAAO,IAAI,CAAA;AACb,CAAC"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@ticatec/omniflow-core",
3
+ "version": "0.1.0",
4
+ "description": "Core primitives, execution context, and toolchain SPI for OmniFlow CI/CD orchestrator",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./context": {
14
+ "types": "./dist/context/index.d.ts",
15
+ "import": "./dist/context/index.js"
16
+ },
17
+ "./primitives": {
18
+ "types": "./dist/primitives/index.d.ts",
19
+ "import": "./dist/primitives/index.js"
20
+ },
21
+ "./toolchain": {
22
+ "types": "./dist/toolchain/index.d.ts",
23
+ "import": "./dist/toolchain/index.js"
24
+ }
25
+ },
26
+ "scripts": {
27
+ "build": "tsc",
28
+ "clean": "rm -rf dist",
29
+ "prebuild": "npm run clean",
30
+ "test": "NODE_OPTIONS=--experimental-vm-modules jest",
31
+ "typecheck": "tsc --noEmit",
32
+ "publish:npm": "npm publish --access public"
33
+ },
34
+ "license": "MIT",
35
+ "dependencies": {
36
+ "execa": "^9.5.1"
37
+ },
38
+ "devDependencies": {
39
+ "@jest/globals": "^30.4.1",
40
+ "@types/jest": "^30.0.0",
41
+ "@types/node": "^22.10.2",
42
+ "jest": "^30.4.2",
43
+ "ts-jest": "^29.4.9",
44
+ "typescript": "^5.7.2"
45
+ },
46
+ "engines": {
47
+ "node": ">=20.0.0"
48
+ },
49
+ "files": [
50
+ "dist",
51
+ "README.md",
52
+ "README_CN.md"
53
+ ],
54
+ "publishConfig": {
55
+ "access": "public"
56
+ }
57
+ }