@piqit/resolvers 0.0.6 → 0.0.8
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/path-pattern.d.ts +3 -1
- package/dist/path-pattern.d.ts.map +1 -1
- package/dist/path-pattern.js +36 -20
- package/dist/path-pattern.js.map +1 -1
- package/package.json +5 -2
package/dist/path-pattern.d.ts
CHANGED
|
@@ -16,8 +16,9 @@ import { StandardSchema } from "piqit";
|
|
|
16
16
|
* // = { year: string } & { slug: string }
|
|
17
17
|
*/
|
|
18
18
|
export type ExtractParams<P extends string> = P extends `${string}{${infer Param}}${infer Rest}` ? {
|
|
19
|
-
[K in Param]: string;
|
|
19
|
+
[K in ExtractParamName<Param>]: string;
|
|
20
20
|
} & ExtractParams<Rest> : {};
|
|
21
|
+
type ExtractParamName<T extends string> = T extends `${infer Name}:${string}` ? Name : T;
|
|
21
22
|
/**
|
|
22
23
|
* Simplify a type by flattening intersections.
|
|
23
24
|
* Converts { a: string } & { b: string } to { a: string; b: string }
|
|
@@ -94,4 +95,5 @@ export declare function compilePattern(pattern: string): CompiledPattern;
|
|
|
94
95
|
* @returns A StandardSchema that validates param objects
|
|
95
96
|
*/
|
|
96
97
|
export declare function createParamsSchema(pattern: CompiledPattern): StandardSchema<Record<string, string>>;
|
|
98
|
+
export {};
|
|
97
99
|
//# sourceMappingURL=path-pattern.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-pattern.d.ts","sourceRoot":"","sources":["../src/path-pattern.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAMvC;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,GAC5F;KAAG,CAAC,IAAI,KAAK,GAAG,MAAM;CAAE,GAAG,aAAa,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"path-pattern.d.ts","sourceRoot":"","sources":["../src/path-pattern.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAMvC;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,GAC5F;KAAG,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,GAAG,MAAM;CAAE,GAAG,aAAa,CAAC,IAAI,CAAC,GAChE,EAAE,CAAA;AAEN,KAAK,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,CAAA;AAExF;;;GAGG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AAElD;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;AAMrE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf;;OAEG;IACH,UAAU,EAAE,MAAM,EAAE,CAAA;IAEpB;;;;;;;;;OASG;IACH,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAA;IAErD;;;;;;;;;OASG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;IAElD;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAA;CAC9C;AAiBD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAoF/D;AAMD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,GACvB,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA4BxC"}
|
package/dist/path-pattern.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* Regex to match parameter placeholders in patterns.
|
|
15
15
|
* Matches {paramName} where paramName is alphanumeric + underscores.
|
|
16
16
|
*/
|
|
17
|
-
const PARAM_REGEX = /\{([a-zA-Z_][a-zA-Z0-9_]*)
|
|
17
|
+
const PARAM_REGEX = /\{([a-zA-Z_][a-zA-Z0-9_]*)(?::([^{}]+))?\}/g;
|
|
18
18
|
/**
|
|
19
19
|
* Characters that need escaping in regex.
|
|
20
20
|
*/
|
|
@@ -33,21 +33,37 @@ const REGEX_ESCAPE = /[.*+?^${}()|[\]\\]/g;
|
|
|
33
33
|
export function compilePattern(pattern) {
|
|
34
34
|
// Extract all parameter names in order
|
|
35
35
|
const paramNames = [];
|
|
36
|
+
const placeholders = [];
|
|
36
37
|
let match;
|
|
37
38
|
const regex = new RegExp(PARAM_REGEX.source, "g");
|
|
38
39
|
while ((match = regex.exec(pattern)) !== null) {
|
|
39
|
-
|
|
40
|
+
const name = match[1];
|
|
41
|
+
const constraint = match[2] || undefined;
|
|
42
|
+
paramNames.push(name);
|
|
43
|
+
placeholders.push({
|
|
44
|
+
raw: match[0],
|
|
45
|
+
name,
|
|
46
|
+
constraint,
|
|
47
|
+
});
|
|
40
48
|
}
|
|
41
|
-
// Build the match regex by
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
.replace(
|
|
49
|
+
// Build the match regex by escaping literal segments and inserting
|
|
50
|
+
// capturing groups for placeholders.
|
|
51
|
+
let regexPattern = "";
|
|
52
|
+
let cursor = 0;
|
|
53
|
+
const placeholderRegex = new RegExp(PARAM_REGEX.source, "g");
|
|
54
|
+
let placeholderMatch;
|
|
55
|
+
while ((placeholderMatch = placeholderRegex.exec(pattern)) !== null) {
|
|
56
|
+
const [raw, _name, constraint] = placeholderMatch;
|
|
57
|
+
const literal = pattern.slice(cursor, placeholderMatch.index);
|
|
58
|
+
regexPattern += literal.replace(REGEX_ESCAPE, "\\$&");
|
|
59
|
+
// Use non-greedy groups so adjacent params separated by literals
|
|
60
|
+
// (e.g. "wp-{priority}-{name}.md") split as expected.
|
|
61
|
+
// Allow inline constraints via {param:...}, for example {num:\\d+}.
|
|
62
|
+
const capture = constraint?.trim() || "[^/]+?";
|
|
63
|
+
regexPattern += `(${capture})`;
|
|
64
|
+
cursor = placeholderMatch.index + raw.length;
|
|
65
|
+
}
|
|
66
|
+
regexPattern += pattern.slice(cursor).replace(REGEX_ESCAPE, "\\$&");
|
|
51
67
|
const matchRegex = new RegExp(`^${regexPattern}$`);
|
|
52
68
|
return {
|
|
53
69
|
pattern,
|
|
@@ -55,15 +71,15 @@ export function compilePattern(pattern) {
|
|
|
55
71
|
toGlob(constraints) {
|
|
56
72
|
let glob = pattern;
|
|
57
73
|
// Replace each param with either its constrained value or a wildcard
|
|
58
|
-
for (const
|
|
59
|
-
const value = constraints?.[name];
|
|
74
|
+
for (const placeholder of placeholders) {
|
|
75
|
+
const value = constraints?.[placeholder.name];
|
|
60
76
|
if (value !== undefined && value !== null) {
|
|
61
77
|
// Use the constrained value
|
|
62
|
-
glob = glob.replace(
|
|
78
|
+
glob = glob.replace(placeholder.raw, String(value));
|
|
63
79
|
}
|
|
64
80
|
else {
|
|
65
81
|
// Use a wildcard - * matches anything except /
|
|
66
|
-
glob = glob.replace(
|
|
82
|
+
glob = glob.replace(placeholder.raw, "*");
|
|
67
83
|
}
|
|
68
84
|
}
|
|
69
85
|
return glob;
|
|
@@ -80,12 +96,12 @@ export function compilePattern(pattern) {
|
|
|
80
96
|
},
|
|
81
97
|
build(params) {
|
|
82
98
|
let result = pattern;
|
|
83
|
-
for (const
|
|
84
|
-
const value = params[name];
|
|
99
|
+
for (const placeholder of placeholders) {
|
|
100
|
+
const value = params[placeholder.name];
|
|
85
101
|
if (value === undefined) {
|
|
86
|
-
throw new Error(`Missing required param: ${name}`);
|
|
102
|
+
throw new Error(`Missing required param: ${placeholder.name}`);
|
|
87
103
|
}
|
|
88
|
-
result = result.replace(
|
|
104
|
+
result = result.replace(placeholder.raw, value);
|
|
89
105
|
}
|
|
90
106
|
return result;
|
|
91
107
|
},
|
package/dist/path-pattern.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-pattern.js","sourceRoot":"","sources":["../src/path-pattern.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"path-pattern.js","sourceRoot":"","sources":["../src/path-pattern.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@piqit/resolvers",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": {
|
|
9
|
+
"bun": "./src/index.ts",
|
|
9
10
|
"types": "./dist/index.d.ts",
|
|
10
11
|
"default": "./dist/index.js"
|
|
11
12
|
},
|
|
12
13
|
"./edge": {
|
|
14
|
+
"bun": "./src/edge.ts",
|
|
13
15
|
"types": "./dist/edge.d.ts",
|
|
14
16
|
"default": "./dist/edge.js"
|
|
15
17
|
},
|
|
16
18
|
"./static": {
|
|
19
|
+
"bun": "./src/static.ts",
|
|
17
20
|
"types": "./dist/static.d.ts",
|
|
18
21
|
"default": "./dist/static.js"
|
|
19
22
|
}
|
|
@@ -22,7 +25,7 @@
|
|
|
22
25
|
"dist"
|
|
23
26
|
],
|
|
24
27
|
"dependencies": {
|
|
25
|
-
"piqit": "0.0.
|
|
28
|
+
"piqit": "0.0.8"
|
|
26
29
|
},
|
|
27
30
|
"devDependencies": {
|
|
28
31
|
"@types/bun": "latest",
|