@workflow/utils 5.0.0-beta.1 → 5.0.0-beta.2

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.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { pluralize } from './pluralize.js';
2
- export { parseClassName, parseStepName, parseWorkflowName, } from './parse-name.js';
2
+ export { formatStepName, formatWorkflowName, parseClassName, parseStepName, parseWorkflowName, } from './parse-name.js';
3
3
  export { once, type PromiseWithResolvers, withResolvers } from './promise.js';
4
4
  export { parseDurationToDate } from './time.js';
5
5
  export { isVercelWorldTarget, resolveWorkflowTargetWorld, usesVercelWorld, } from './world-target.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,KAAK,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,KAAK,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { pluralize } from './pluralize.js';
2
- export { parseClassName, parseStepName, parseWorkflowName, } from './parse-name.js';
2
+ export { formatStepName, formatWorkflowName, parseClassName, parseStepName, parseWorkflowName, } from './parse-name.js';
3
3
  export { once, withResolvers } from './promise.js';
4
4
  export { parseDurationToDate } from './time.js';
5
5
  export { isVercelWorldTarget, resolveWorkflowTargetWorld, usesVercelWorld, } from './world-target.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAA6B,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,mBAAmB,CAAC","sourcesContent":["export { pluralize } from './pluralize.js';\nexport {\n parseClassName,\n parseStepName,\n parseWorkflowName,\n} from './parse-name.js';\nexport { once, type PromiseWithResolvers, withResolvers } from './promise.js';\nexport { parseDurationToDate } from './time.js';\nexport {\n isVercelWorldTarget,\n resolveWorkflowTargetWorld,\n usesVercelWorld,\n} from './world-target.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAA6B,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,mBAAmB,CAAC","sourcesContent":["export { pluralize } from './pluralize.js';\nexport {\n formatStepName,\n formatWorkflowName,\n parseClassName,\n parseStepName,\n parseWorkflowName,\n} from './parse-name.js';\nexport { once, type PromiseWithResolvers, withResolvers } from './promise.js';\nexport { parseDurationToDate } from './time.js';\nexport {\n isVercelWorldTarget,\n resolveWorkflowTargetWorld,\n usesVercelWorld,\n} from './world-target.js';\n"]}
@@ -34,4 +34,16 @@ export declare function parseClassName(name: string): {
34
34
  moduleSpecifier: string;
35
35
  functionName: string;
36
36
  } | null;
37
+ /**
38
+ * Human-friendly single-line rendering of a step or workflow name for log
39
+ * messages. Parses the machine name (`step//./workflows/1_simple//add`) and
40
+ * renders it as `add (./workflows/1_simple)` so users see the short function
41
+ * name and the source module specifier without the internal `//` syntax.
42
+ *
43
+ * Falls back to the raw name if parsing fails (e.g. older name formats or
44
+ * user-provided strings we don't recognize) so logs never silently drop
45
+ * information.
46
+ */
47
+ export declare function formatStepName(name: string): string;
48
+ export declare function formatWorkflowName(name: string): string;
37
49
  //# sourceMappingURL=parse-name.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-name.d.ts","sourceRoot":"","sources":["../src/parse-name.ts"],"names":[],"mappings":"AAyDA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM;eAxD9B,MAAM;qBAAmB,MAAM;kBAAgB,MAAM;SA0DpE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM;eAnE1B,MAAM;qBAAmB,MAAM;kBAAgB,MAAM;SAqEpE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM;eA9E3B,MAAM;qBAAmB,MAAM;kBAAgB,MAAM;SAgFpE"}
1
+ {"version":3,"file":"parse-name.d.ts","sourceRoot":"","sources":["../src/parse-name.ts"],"names":[],"mappings":"AAyDA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM;eAxD9B,MAAM;qBAAmB,MAAM;kBAAgB,MAAM;SA0DpE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM;eAnE1B,MAAM;qBAAmB,MAAM;kBAAgB,MAAM;SAqEpE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM;eA9E3B,MAAM;qBAAmB,MAAM;kBAAgB,MAAM;SAgFpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD"}
@@ -77,4 +77,25 @@ export function parseStepName(name) {
77
77
  export function parseClassName(name) {
78
78
  return parseName('class', name);
79
79
  }
80
+ /**
81
+ * Human-friendly single-line rendering of a step or workflow name for log
82
+ * messages. Parses the machine name (`step//./workflows/1_simple//add`) and
83
+ * renders it as `add (./workflows/1_simple)` so users see the short function
84
+ * name and the source module specifier without the internal `//` syntax.
85
+ *
86
+ * Falls back to the raw name if parsing fails (e.g. older name formats or
87
+ * user-provided strings we don't recognize) so logs never silently drop
88
+ * information.
89
+ */
90
+ export function formatStepName(name) {
91
+ return formatParsedName(parseStepName(name), name);
92
+ }
93
+ export function formatWorkflowName(name) {
94
+ return formatParsedName(parseWorkflowName(name), name);
95
+ }
96
+ function formatParsedName(parsed, fallback) {
97
+ if (!parsed)
98
+ return fallback;
99
+ return `${parsed.shortName} (${parsed.moduleSpecifier})`;
100
+ }
80
101
  //# sourceMappingURL=parse-name.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-name.js","sourceRoot":"","sources":["../src/parse-name.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,SAAS,SAAS,CAChB,GAAW,EACX,IAAY;IAEZ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,2DAA2D;IAC3D,SAAS;IACT,sDAAsD;IACtD,iCAAiC;IACjC,sGAAsG;IACtG,kGAAkG;IAClG,6FAA6F;IAC7F,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzE,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,2EAA2E;IAC3E,IAAI,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAErD,gDAAgD;IAChD,yEAAyE;IACzE,2EAA2E;IAC3E,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,IAAI,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,2CAA2C;QAC3C,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,mEAAmE;QACnE,oEAAoE;QACpE,MAAM,cAAc,GAClB,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACjD,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,eAAe,GAAG,cAAc,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,CAAC;IAED,uEAAuE;IACvE,gFAAgF;IAChF,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,eAAe,EAAE,CAAC;QACpE,SAAS,GAAG,eAAe,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,SAAS;QACT,eAAe;QACf,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC","sourcesContent":["/**\n * Parse a machine readable name.\n *\n * @see {@link ../../swc-plugin-workflow/transform/src/naming.rs} for the naming scheme.\n */\nfunction parseName(\n tag: string,\n name: string\n): { shortName: string; moduleSpecifier: string; functionName: string } | null {\n if (typeof name !== 'string') {\n return null;\n }\n // Looks like {prefix}//{moduleSpecifier}//{function_name}\"\n // Where:\n // - {prefix} is either 'workflow', 'step', or 'class'\n // - {moduleSpecifier} is either:\n // - A module specifier (e.g., `point@0.0.1`, `@myorg/shared@1.2.3`) when provided via plugin config\n // - A relative path prefixed with `./` (e.g., `./src/jobs/order`) when no specifier is provided\n // - {function_name} is the name of the function (with nested functions using `/` separators)\n const [prefix, moduleSpecifier, ...functionNameParts] = name.split('//');\n if (prefix !== tag || !moduleSpecifier || functionNameParts.length === 0) {\n return null;\n }\n\n const functionName = functionNameParts.join('//');\n // For nested functions like \"processOrder/innerStep\", get just \"innerStep\"\n let shortName = functionName.split('/').at(-1) ?? '';\n\n // Extract a reasonable name for default exports\n // For module specifiers like \"point@0.0.1\", use the package name \"point\"\n // For relative paths like \"./src/jobs/order\", use the last segment \"order\"\n let moduleShortName = '';\n if (moduleSpecifier.startsWith('./')) {\n // Relative path: use the last path segment\n moduleShortName = moduleSpecifier.split('/').at(-1) ?? '';\n } else {\n // Module specifier: extract package name (strip version and scope)\n // e.g., \"@myorg/shared@1.2.3\" -> \"shared\", \"point@0.0.1\" -> \"point\"\n const withoutVersion =\n moduleSpecifier.split('@').slice(0, -1).join('@') ||\n moduleSpecifier.split('@')[0];\n moduleShortName = withoutVersion?.split('/').at(-1) ?? '';\n }\n\n // Default exports will use the module short name. \"__default\" was only\n // used for one package version, so this is a minor backwards compatibility fix.\n if (['default', '__default'].includes(shortName) && moduleShortName) {\n shortName = moduleShortName;\n }\n\n return {\n shortName,\n moduleSpecifier,\n functionName,\n };\n}\n\n/**\n * Parse a workflow name into its components.\n *\n * @param name - The workflow name to parse (e.g., \"workflow//./src/jobs/order//processOrder\" or \"workflow//mypackage@1.0.0//processOrder\").\n * @returns An object with `shortName`, `moduleSpecifier`, and `functionName` properties.\n * When the name is invalid, returns `null`.\n */\nexport function parseWorkflowName(name: string) {\n return parseName('workflow', name);\n}\n\n/**\n * Parse a step name into its components.\n *\n * @param name - The step name to parse (e.g., \"step//./src/jobs/order//fetchData\" or \"step//@myorg/tasks@2.0.0//processOrder\").\n * @returns An object with `shortName`, `moduleSpecifier`, and `functionName` properties.\n * When the name is invalid, returns `null`.\n */\nexport function parseStepName(name: string) {\n return parseName('step', name);\n}\n\n/**\n * Parse a class ID into its components.\n *\n * @param name - The class ID to parse (e.g., \"class//./src/models/Point//Point\" or \"class//point@0.0.1//Point\").\n * @returns An object with `shortName`, `moduleSpecifier`, and `functionName` (className) properties.\n * When the name is invalid, returns `null`.\n */\nexport function parseClassName(name: string) {\n return parseName('class', name);\n}\n"]}
1
+ {"version":3,"file":"parse-name.js","sourceRoot":"","sources":["../src/parse-name.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,SAAS,SAAS,CAChB,GAAW,EACX,IAAY;IAEZ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,2DAA2D;IAC3D,SAAS;IACT,sDAAsD;IACtD,iCAAiC;IACjC,sGAAsG;IACtG,kGAAkG;IAClG,6FAA6F;IAC7F,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzE,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,2EAA2E;IAC3E,IAAI,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAErD,gDAAgD;IAChD,yEAAyE;IACzE,2EAA2E;IAC3E,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,IAAI,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,2CAA2C;QAC3C,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,mEAAmE;QACnE,oEAAoE;QACpE,MAAM,cAAc,GAClB,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACjD,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,eAAe,GAAG,cAAc,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,CAAC;IAED,uEAAuE;IACvE,gFAAgF;IAChF,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,eAAe,EAAE,CAAC;QACpE,SAAS,GAAG,eAAe,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,SAAS;QACT,eAAe;QACf,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,gBAAgB,CACvB,MAIQ,EACR,QAAgB;IAEhB,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAC7B,OAAO,GAAG,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,eAAe,GAAG,CAAC;AAC3D,CAAC","sourcesContent":["/**\n * Parse a machine readable name.\n *\n * @see {@link ../../swc-plugin-workflow/transform/src/naming.rs} for the naming scheme.\n */\nfunction parseName(\n tag: string,\n name: string\n): { shortName: string; moduleSpecifier: string; functionName: string } | null {\n if (typeof name !== 'string') {\n return null;\n }\n // Looks like {prefix}//{moduleSpecifier}//{function_name}\"\n // Where:\n // - {prefix} is either 'workflow', 'step', or 'class'\n // - {moduleSpecifier} is either:\n // - A module specifier (e.g., `point@0.0.1`, `@myorg/shared@1.2.3`) when provided via plugin config\n // - A relative path prefixed with `./` (e.g., `./src/jobs/order`) when no specifier is provided\n // - {function_name} is the name of the function (with nested functions using `/` separators)\n const [prefix, moduleSpecifier, ...functionNameParts] = name.split('//');\n if (prefix !== tag || !moduleSpecifier || functionNameParts.length === 0) {\n return null;\n }\n\n const functionName = functionNameParts.join('//');\n // For nested functions like \"processOrder/innerStep\", get just \"innerStep\"\n let shortName = functionName.split('/').at(-1) ?? '';\n\n // Extract a reasonable name for default exports\n // For module specifiers like \"point@0.0.1\", use the package name \"point\"\n // For relative paths like \"./src/jobs/order\", use the last segment \"order\"\n let moduleShortName = '';\n if (moduleSpecifier.startsWith('./')) {\n // Relative path: use the last path segment\n moduleShortName = moduleSpecifier.split('/').at(-1) ?? '';\n } else {\n // Module specifier: extract package name (strip version and scope)\n // e.g., \"@myorg/shared@1.2.3\" -> \"shared\", \"point@0.0.1\" -> \"point\"\n const withoutVersion =\n moduleSpecifier.split('@').slice(0, -1).join('@') ||\n moduleSpecifier.split('@')[0];\n moduleShortName = withoutVersion?.split('/').at(-1) ?? '';\n }\n\n // Default exports will use the module short name. \"__default\" was only\n // used for one package version, so this is a minor backwards compatibility fix.\n if (['default', '__default'].includes(shortName) && moduleShortName) {\n shortName = moduleShortName;\n }\n\n return {\n shortName,\n moduleSpecifier,\n functionName,\n };\n}\n\n/**\n * Parse a workflow name into its components.\n *\n * @param name - The workflow name to parse (e.g., \"workflow//./src/jobs/order//processOrder\" or \"workflow//mypackage@1.0.0//processOrder\").\n * @returns An object with `shortName`, `moduleSpecifier`, and `functionName` properties.\n * When the name is invalid, returns `null`.\n */\nexport function parseWorkflowName(name: string) {\n return parseName('workflow', name);\n}\n\n/**\n * Parse a step name into its components.\n *\n * @param name - The step name to parse (e.g., \"step//./src/jobs/order//fetchData\" or \"step//@myorg/tasks@2.0.0//processOrder\").\n * @returns An object with `shortName`, `moduleSpecifier`, and `functionName` properties.\n * When the name is invalid, returns `null`.\n */\nexport function parseStepName(name: string) {\n return parseName('step', name);\n}\n\n/**\n * Parse a class ID into its components.\n *\n * @param name - The class ID to parse (e.g., \"class//./src/models/Point//Point\" or \"class//point@0.0.1//Point\").\n * @returns An object with `shortName`, `moduleSpecifier`, and `functionName` (className) properties.\n * When the name is invalid, returns `null`.\n */\nexport function parseClassName(name: string) {\n return parseName('class', name);\n}\n\n/**\n * Human-friendly single-line rendering of a step or workflow name for log\n * messages. Parses the machine name (`step//./workflows/1_simple//add`) and\n * renders it as `add (./workflows/1_simple)` so users see the short function\n * name and the source module specifier without the internal `//` syntax.\n *\n * Falls back to the raw name if parsing fails (e.g. older name formats or\n * user-provided strings we don't recognize) so logs never silently drop\n * information.\n */\nexport function formatStepName(name: string): string {\n return formatParsedName(parseStepName(name), name);\n}\n\nexport function formatWorkflowName(name: string): string {\n return formatParsedName(parseWorkflowName(name), name);\n}\n\nfunction formatParsedName(\n parsed: {\n shortName: string;\n moduleSpecifier: string;\n functionName: string;\n } | null,\n fallback: string\n): string {\n if (!parsed) return fallback;\n return `${parsed.shortName} (${parsed.moduleSpecifier})`;\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@workflow/utils",
3
3
  "description": "Utility functions for Workflow SDK",
4
- "version": "5.0.0-beta.1",
4
+ "version": "5.0.0-beta.2",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "files": [