@phoenix-wing/code-core 0.4.1 → 0.4.3
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/README.md +4 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/pnwUuid.d.ts.map +1 -1
- package/dist/pnwUuid.js +4 -2
- package/dist/pnwUuid.js.map +1 -1
- package/dist/pnwWorkset.d.ts.map +1 -1
- package/dist/pnwWorkset.js +2 -2
- package/dist/pnwWorkset.js.map +1 -1
- package/dist/pnwWorkspacePath.d.ts +15 -0
- package/dist/pnwWorkspacePath.d.ts.map +1 -0
- package/dist/pnwWorkspacePath.js +68 -0
- package/dist/pnwWorkspacePath.js.map +1 -0
- package/package.json +1 -1
- package/src/fixtures/pure-capabilities-v1.json +74 -0
- package/src/index.ts +9 -0
package/README.md
CHANGED
|
@@ -5,10 +5,12 @@ Phoenix Code 可跨宿主复用的纯 TypeScript 算法与数据契约。包内
|
|
|
5
5
|
当前公共能力包括:
|
|
6
6
|
|
|
7
7
|
- C++ 实现文件与头文件成员排序、锁定区保护;
|
|
8
|
-
- UUID
|
|
8
|
+
- UUID/GUID/CAA GUID 识别、花括号/大小写/布局保持、替换计划与纯文本 apply;
|
|
9
9
|
- Code Rename 计划与纯文本 apply;
|
|
10
|
-
- 工作集 Schema
|
|
10
|
+
- 工作集 Schema,以及 workspace 相对路径规范化、去重、文件/目录匹配、包含和 roots 相对化;
|
|
11
11
|
- CAA 工程环境和对话框 handoff 数据契约;
|
|
12
12
|
- 跨宿主文件结果分组与排序 ViewModel。
|
|
13
13
|
|
|
14
14
|
`kt-auto-code` 与 Desk Tools 应直接消费本包。旧 `phoenix-wing/code-core` subpath 仅保留兼容 re-export,不再持有算法真源。
|
|
15
|
+
|
|
16
|
+
`@phoenix-wing/code-core/fixtures/pure-capabilities-v1.json` 是 UUID 与 workspace path 的跨宿主 golden。其 SHA-256 为 `1d894c5ccffb8d8840c2fcf8a032ed34c79e7c5d2e44ad95fe1bf84665b32e8c`;消费者应比较字节与行为,不复制正则、格式器或路径包含算法。
|
package/dist/index.d.ts
CHANGED
|
@@ -6,5 +6,6 @@ export { type PnwUuidPlanApplyResult, type PnwUuidPlanFile, type PnwUuidReplacem
|
|
|
6
6
|
export { type PnwCaaDialogHandoff, type PnwCaaDialogHandoffFile, pnwIsCaaDialogHandoff, } from "./pnwCaaDialogHandoff.js";
|
|
7
7
|
export { type PnwCodeRenameChange, type PnwCodeRenameEntry, type PnwCodeRenameLevel, type PnwCodeRenameOptions, type PnwCodeRenamePlan, pnwApplyCodeRenameText, pnwPlanCodeRename, } from "./pnwCodeRenamePlan.js";
|
|
8
8
|
export { type PnwWorkset, type PnwWorksetDocument, type PnwWorksetParseResult, pnwIsSafeWorkspacePath, pnwParseWorksetDocument, } from "./pnwWorkset.js";
|
|
9
|
+
export { type PnwWorkspacePathEntry, pnwIsWorkspacePathWithin, pnwMatchesWorkspacePath, pnwNormalizeWorkspacePath, pnwNormalizeWorkspacePaths, pnwRelativeToWorkspaceRoots, } from "./pnwWorkspacePath.js";
|
|
9
10
|
export { type PnwCaaEnvironment, type PnwCaaEnvironmentKey, type PnwCaaEnvironmentSource, type PnwCaaEnvironmentValue, pnwResolveCaaEnvironment, } from "./pnwCaaEnvironment.js";
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,SAAS,EACT,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,wBAAwB,GACzB,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EACxB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,SAAS,EACT,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,KAAK,qBAAqB,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,wBAAwB,GACzB,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,5 +6,6 @@ export { pnwApplyUuidReplacementPlan, pnwPlanUuidReplacements, } from "./pnwUuid
|
|
|
6
6
|
export { pnwIsCaaDialogHandoff, } from "./pnwCaaDialogHandoff.js";
|
|
7
7
|
export { pnwApplyCodeRenameText, pnwPlanCodeRename, } from "./pnwCodeRenamePlan.js";
|
|
8
8
|
export { pnwIsSafeWorkspacePath, pnwParseWorksetDocument, } from "./pnwWorkset.js";
|
|
9
|
+
export { pnwIsWorkspacePathWithin, pnwMatchesWorkspacePath, pnwNormalizeWorkspacePath, pnwNormalizeWorkspacePaths, pnwRelativeToWorkspaceRoots, } from "./pnwWorkspacePath.js";
|
|
9
10
|
export { pnwResolveCaaEnvironment, } from "./pnwCaaEnvironment.js";
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAIL,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAML,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAIL,sBAAsB,EACtB,wBAAwB,EACxB,SAAS,EACT,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAEtB,OAAO,EAQL,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAGL,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAML,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAIL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAKL,wBAAwB,GACzB,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAIL,8BAA8B,EAC9B,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAML,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAIL,sBAAsB,EACtB,wBAAwB,EACxB,SAAS,EACT,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AAEtB,OAAO,EAQL,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAGL,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAML,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAIL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAEL,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAKL,wBAAwB,GACzB,MAAM,wBAAwB,CAAC"}
|
package/dist/pnwUuid.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pnwUuid.d.ts","sourceRoot":"","sources":["../src/pnwUuid.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEzD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB,CAAC;
|
|
1
|
+
{"version":3,"file":"pnwUuid.d.ts","sourceRoot":"","sources":["../src/pnwUuid.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEzD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB,CAAC;AAiBF,6FAA6F;AAC7F,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,iBAAiB,EAAE,CAwBjF;AAED,wFAAwF;AACxF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,kBAAkB,EAAE,GAAG,MAAM,CAe3G;AAED,uEAAuE;AACvE,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKhD;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,2FAA2F;AAC3F,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAGtF"}
|
package/dist/pnwUuid.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
const
|
|
1
|
+
const PNW_DASHED_UUID_SOURCE = "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}";
|
|
2
|
+
const PNW_STANDARD_UUID_PATTERN = new RegExp(`(?<![0-9a-z_])(?:\\{${PNW_DASHED_UUID_SOURCE}\\}|${PNW_DASHED_UUID_SOURCE}|[0-9a-f]{32})(?![0-9a-z_])`, "gi");
|
|
2
3
|
const PNW_CAA_BYTE_PATTERN = "0x([0-9a-f]{2})";
|
|
3
4
|
const PNW_CAA_BYTES_PATTERN = Array.from({ length: 8 }, () => PNW_CAA_BYTE_PATTERN).join("\\s*,\\s*");
|
|
4
5
|
const PNW_CAA_GUID_SPECS = [
|
|
@@ -92,12 +93,13 @@ function pnwFormatUuidLike(template, replacement) {
|
|
|
92
93
|
if (caa)
|
|
93
94
|
return pnwFormatCaaGuid(normalized, caa.style, sourceUsesUppercase, template);
|
|
94
95
|
const sourceUsesHyphens = template.includes("-");
|
|
96
|
+
const sourceUsesBraces = template.startsWith("{") && template.endsWith("}");
|
|
95
97
|
let output = sourceUsesHyphens
|
|
96
98
|
? `${normalized.slice(0, 8)}-${normalized.slice(8, 12)}-${normalized.slice(12, 16)}-${normalized.slice(16, 20)}-${normalized.slice(20)}`
|
|
97
99
|
: normalized;
|
|
98
100
|
if (sourceUsesUppercase)
|
|
99
101
|
output = output.toUpperCase();
|
|
100
|
-
return output;
|
|
102
|
+
return sourceUsesBraces ? `{${output}}` : output;
|
|
101
103
|
}
|
|
102
104
|
function pnwFormatCaaGuid(normalized, style, useUppercase, template) {
|
|
103
105
|
const hex = useUppercase ? normalized.toUpperCase() : normalized;
|
package/dist/pnwUuid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pnwUuid.js","sourceRoot":"","sources":["../src/pnwUuid.ts"],"names":[],"mappings":"AAmBA,MAAM,yBAAyB,GAAG,
|
|
1
|
+
{"version":3,"file":"pnwUuid.js","sourceRoot":"","sources":["../src/pnwUuid.ts"],"names":[],"mappings":"AAmBA,MAAM,sBAAsB,GAAG,8DAA8D,CAAC;AAC9F,MAAM,yBAAyB,GAAG,IAAI,MAAM,CAC1C,uBAAuB,sBAAsB,OAAO,sBAAsB,6BAA6B,EACvG,IAAI,CACL,CAAC;AACF,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAC/C,MAAM,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACtG,MAAM,kBAAkB,GAA4E;IAClG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,iFAAiF,GAAG,qBAAqB,GAAG,SAAS,EAAE;IAClJ,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,iFAAiF,GAAG,qBAAqB,GAAG,SAAS,EAAE;IACtJ,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,0EAA0E,GAAG,qBAAqB,GAAG,yBAAyB,EAAE;CAC9J,CAAC;AAEF,6FAA6F;AAC7F,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,MAAM,UAAU,GAAoF,EAAE,CAAC;IACvG,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,KAA6B,CAAC;QAClC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5H,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QAChC,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,SAAS;QAChE,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACzH,CAAC;IACD,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QAClC,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAC7D,OAAO,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,SAAS,CAAE,GAAG,CAAC,EAAE,CAAC;IACtG,CAAC,CAAC,CAAC;AACL,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,yBAAyB,CAAC,IAAY,EAAE,YAA2C;IACjG,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YAAE,SAAS;QACzE,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,MAAM,UAAU,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACpD,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW;YAAE,SAAS;QAC3B,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,wBAAwB,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpK,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9F,IAAI,kFAAkF,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACnH,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;AAC7C,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC,UAAU,CAAC;IAC/B,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC;AAClG,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,wBAAwB,CAAC,QAAgB,EAAE,WAAmB;IAC5E,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrE,OAAO,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACtE,IAAI,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpG,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,4BAA4B,CAAC,MAAyB;IAC7D,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAE,WAAmB;IAC9D,MAAM,GAAG,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,GAAG;QAAE,OAAO,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IACvF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5E,IAAI,MAAM,GAAG,iBAAiB;QAC5B,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;QACxI,CAAC,CAAC,UAAU,CAAC;IACf,IAAI,mBAAmB;QAAE,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACvD,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;AACnD,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAkB,EAAE,KAAsB,EAAE,YAAqB,EAAE,QAAgB;IAC3G,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IACjE,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IACjG,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7B,IAAI,KAAK,KAAK,YAAY;QAAE,OAAO,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,QAAQ,GAAG,CAAC;IAC9E,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;IAC1E,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC;QACtE,OAAO,KAAK,EAAE,MAAM,MAAM,KAAK,EAAE,MAAM,MAAM,KAAK,EAAE,MAAM,MAAM,IAAI,QAAQ,GAAG,CAAC;IAClF,CAAC;IACD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,GAAG,CAAC;AACpD,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,GAAW,EAAE,KAA6C;IAC5F,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC/G,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,MAAyB,EAAE,MAAc;IAC7D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,OAAO,KAAK,GAAG,KAAK,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,IAAI,MAAM,CAAC,MAAM,CAAE,IAAI,MAAM;YAAE,KAAK,GAAG,MAAM,CAAC;;YACzC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/pnwWorkset.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pnwWorkset.d.ts","sourceRoot":"","sources":["../src/pnwWorkset.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pnwWorkset.d.ts","sourceRoot":"","sources":["../src/pnwWorkset.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,CAAC;AACnG,MAAM,MAAM,qBAAqB,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAEjJ,wFAAwF;AACxF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAwB3E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE7D"}
|
package/dist/pnwWorkset.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { pnwNormalizeWorkspacePath } from "./pnwWorkspacePath.js";
|
|
1
2
|
/** Parses `.phoenix/worksets.json` without touching a workspace or evaluating globs. */
|
|
2
3
|
export function pnwParseWorksetDocument(text) {
|
|
3
4
|
let raw;
|
|
@@ -42,8 +43,7 @@ export function pnwParseWorksetDocument(text) {
|
|
|
42
43
|
return diagnostics.length ? { valid: false, diagnostics } : { valid: true, document: { version: 1, worksets }, diagnostics: [] };
|
|
43
44
|
}
|
|
44
45
|
export function pnwIsSafeWorkspacePath(value) {
|
|
45
|
-
|
|
46
|
-
return Boolean(normalized) && !normalized.startsWith("/") && !/^[a-z]:\//i.test(normalized) && !normalized.split("/").includes("..");
|
|
46
|
+
return pnwNormalizeWorkspacePath(value) !== null;
|
|
47
47
|
}
|
|
48
48
|
function pnwIsRecord(value) { return typeof value === "object" && value !== null && !Array.isArray(value); }
|
|
49
49
|
function pnwText(value) { return typeof value === "string" ? value.trim() : ""; }
|
package/dist/pnwWorkset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pnwWorkset.js","sourceRoot":"","sources":["../src/pnwWorkset.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pnwWorkset.js","sourceRoot":"","sources":["../src/pnwWorkset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type PnwWorkspacePathEntry = string | {
|
|
2
|
+
readonly path: string;
|
|
3
|
+
readonly type?: "file" | "dir";
|
|
4
|
+
};
|
|
5
|
+
/** Normalizes one concrete workspace-relative path without consulting a filesystem. */
|
|
6
|
+
export declare function pnwNormalizeWorkspacePath(value: string): string | null;
|
|
7
|
+
/** Normalizes and de-duplicates concrete workspace paths while preserving first-seen order. */
|
|
8
|
+
export declare function pnwNormalizeWorkspacePaths(values: readonly string[]): string[];
|
|
9
|
+
/** Returns whether `candidate` is the same path as, or a descendant of, `parent`. */
|
|
10
|
+
export declare function pnwIsWorkspacePathWithin(candidate: string, parent: string): boolean;
|
|
11
|
+
/** Matches concrete file/dir entries used by Desk and host-specific workset adapters. */
|
|
12
|
+
export declare function pnwMatchesWorkspacePath(candidate: string, entries: readonly PnwWorkspacePathEntry[]): boolean;
|
|
13
|
+
/** Resolves a concrete workspace path relative to the most specific matching workset root. */
|
|
14
|
+
export declare function pnwRelativeToWorkspaceRoots(candidate: string, roots: readonly string[]): string | undefined;
|
|
15
|
+
//# sourceMappingURL=pnwWorkspacePath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pnwWorkspacePath.d.ts","sourceRoot":"","sources":["../src/pnwWorkspacePath.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAChC,CAAC;AAEF,uFAAuF;AACvF,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAStE;AAED,+FAA+F;AAC/F,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAO9E;AAED,qFAAqF;AACrF,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAMnF;AAED,yFAAyF;AACzF,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,SAAS,qBAAqB,EAAE,GACxC,OAAO,CAWT;AAED,8FAA8F;AAC9F,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,MAAM,GAAG,SAAS,CAapB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/** Normalizes one concrete workspace-relative path without consulting a filesystem. */
|
|
2
|
+
export function pnwNormalizeWorkspacePath(value) {
|
|
3
|
+
const input = value.trim().replace(/\\/g, "/");
|
|
4
|
+
if (!input || input.startsWith("/") || /^[a-z]:(?:\/|$)/i.test(input))
|
|
5
|
+
return null;
|
|
6
|
+
const segments = input.split("/").filter((segment) => segment.length > 0 && segment !== ".");
|
|
7
|
+
if (segments.includes(".."))
|
|
8
|
+
return null;
|
|
9
|
+
if (segments.length === 0)
|
|
10
|
+
return input.split("/").every((segment) => !segment || segment === ".")
|
|
11
|
+
? "."
|
|
12
|
+
: null;
|
|
13
|
+
return segments.join("/");
|
|
14
|
+
}
|
|
15
|
+
/** Normalizes and de-duplicates concrete workspace paths while preserving first-seen order. */
|
|
16
|
+
export function pnwNormalizeWorkspacePaths(values) {
|
|
17
|
+
const normalized = new Set();
|
|
18
|
+
for (const value of values) {
|
|
19
|
+
const path = pnwNormalizeWorkspacePath(value);
|
|
20
|
+
if (path)
|
|
21
|
+
normalized.add(path);
|
|
22
|
+
}
|
|
23
|
+
return [...normalized];
|
|
24
|
+
}
|
|
25
|
+
/** Returns whether `candidate` is the same path as, or a descendant of, `parent`. */
|
|
26
|
+
export function pnwIsWorkspacePathWithin(candidate, parent) {
|
|
27
|
+
const normalizedCandidate = pnwNormalizeWorkspacePath(candidate);
|
|
28
|
+
const normalizedParent = pnwNormalizeWorkspacePath(parent);
|
|
29
|
+
if (!normalizedCandidate || !normalizedParent)
|
|
30
|
+
return false;
|
|
31
|
+
if (normalizedParent === ".")
|
|
32
|
+
return true;
|
|
33
|
+
return normalizedCandidate === normalizedParent || normalizedCandidate.startsWith(`${normalizedParent}/`);
|
|
34
|
+
}
|
|
35
|
+
/** Matches concrete file/dir entries used by Desk and host-specific workset adapters. */
|
|
36
|
+
export function pnwMatchesWorkspacePath(candidate, entries) {
|
|
37
|
+
const normalizedCandidate = pnwNormalizeWorkspacePath(candidate);
|
|
38
|
+
if (!normalizedCandidate)
|
|
39
|
+
return false;
|
|
40
|
+
return entries.some((entry) => {
|
|
41
|
+
const path = pnwNormalizeWorkspacePath(typeof entry === "string" ? entry : entry.path);
|
|
42
|
+
if (!path)
|
|
43
|
+
return false;
|
|
44
|
+
const type = typeof entry === "string" ? "file" : entry.type ?? "file";
|
|
45
|
+
return type === "dir"
|
|
46
|
+
? pnwIsWorkspacePathWithin(normalizedCandidate, path)
|
|
47
|
+
: normalizedCandidate === path;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/** Resolves a concrete workspace path relative to the most specific matching workset root. */
|
|
51
|
+
export function pnwRelativeToWorkspaceRoots(candidate, roots) {
|
|
52
|
+
const normalizedCandidate = pnwNormalizeWorkspacePath(candidate);
|
|
53
|
+
if (!normalizedCandidate)
|
|
54
|
+
return undefined;
|
|
55
|
+
const candidates = pnwNormalizeWorkspacePaths(roots)
|
|
56
|
+
.sort((left, right) => right.length - left.length);
|
|
57
|
+
for (const root of candidates) {
|
|
58
|
+
if (root === ".")
|
|
59
|
+
return normalizedCandidate;
|
|
60
|
+
if (normalizedCandidate === root)
|
|
61
|
+
return normalizedCandidate.split("/").pop();
|
|
62
|
+
if (pnwIsWorkspacePathWithin(normalizedCandidate, root)) {
|
|
63
|
+
return normalizedCandidate.slice(root.length + 1);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=pnwWorkspacePath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pnwWorkspacePath.js","sourceRoot":"","sources":["../src/pnwWorkspacePath.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"uuid": {
|
|
4
|
+
"scan": {
|
|
5
|
+
"text": "braced={12345678-1234-1234-1234-1234567890AB}\ncompact=123456781234123412341234567890ab\n",
|
|
6
|
+
"expected": [
|
|
7
|
+
{
|
|
8
|
+
"value": "{12345678-1234-1234-1234-1234567890AB}",
|
|
9
|
+
"normalized": "123456781234123412341234567890ab",
|
|
10
|
+
"kind": "uuid",
|
|
11
|
+
"offset": 7,
|
|
12
|
+
"line": 1,
|
|
13
|
+
"column": 8
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"value": "123456781234123412341234567890ab",
|
|
17
|
+
"normalized": "123456781234123412341234567890ab",
|
|
18
|
+
"kind": "guid32",
|
|
19
|
+
"offset": 54,
|
|
20
|
+
"line": 2,
|
|
21
|
+
"column": 9
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"formatCases": [
|
|
26
|
+
{
|
|
27
|
+
"source": "{12345678-1234-1234-1234-1234567890AB}",
|
|
28
|
+
"replacement": "abcdefab-cdef-4abc-8def-abcdefabcdef",
|
|
29
|
+
"expected": "{ABCDEFAB-CDEF-4ABC-8DEF-ABCDEFABCDEF}"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"source": "0x12345678, 0x1234, 0x1234, {0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef}",
|
|
33
|
+
"replacement": "abcdefab-cdef-4abc-8def-abcdefabcdef",
|
|
34
|
+
"expected": "0xabcdefab, 0xcdef, 0x4abc, {0x8d, 0xef, 0xab, 0xcd, 0xef, 0xab, 0xcd, 0xef}"
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"workspacePath": {
|
|
39
|
+
"normalizeCases": [
|
|
40
|
+
{ "input": " ./src\\module//a.cpp/ ", "expected": "src/module/a.cpp" },
|
|
41
|
+
{ "input": ".", "expected": "." },
|
|
42
|
+
{ "input": "src/../outside.cpp", "expected": null },
|
|
43
|
+
{ "input": "C:/outside.cpp", "expected": null }
|
|
44
|
+
],
|
|
45
|
+
"matchCases": [
|
|
46
|
+
{
|
|
47
|
+
"candidate": "src/module/main.cpp",
|
|
48
|
+
"entries": [{ "path": "src/module", "type": "dir" }],
|
|
49
|
+
"expected": true
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"candidate": "src/module-other/main.cpp",
|
|
53
|
+
"entries": [{ "path": "src/module", "type": "dir" }],
|
|
54
|
+
"expected": false
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"candidate": "docs/README.md",
|
|
58
|
+
"entries": ["README.md"],
|
|
59
|
+
"expected": false
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"relativeCases": [
|
|
63
|
+
{
|
|
64
|
+
"candidate": "src/module/main.cpp",
|
|
65
|
+
"roots": [".", "src/module"],
|
|
66
|
+
"expected": "main.cpp"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"candidate": "src/other.cpp",
|
|
70
|
+
"roots": ["src/module"]
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -69,6 +69,15 @@ export {
|
|
|
69
69
|
pnwParseWorksetDocument,
|
|
70
70
|
} from "./pnwWorkset.js";
|
|
71
71
|
|
|
72
|
+
export {
|
|
73
|
+
type PnwWorkspacePathEntry,
|
|
74
|
+
pnwIsWorkspacePathWithin,
|
|
75
|
+
pnwMatchesWorkspacePath,
|
|
76
|
+
pnwNormalizeWorkspacePath,
|
|
77
|
+
pnwNormalizeWorkspacePaths,
|
|
78
|
+
pnwRelativeToWorkspaceRoots,
|
|
79
|
+
} from "./pnwWorkspacePath.js";
|
|
80
|
+
|
|
72
81
|
export {
|
|
73
82
|
type PnwCaaEnvironment,
|
|
74
83
|
type PnwCaaEnvironmentKey,
|