@piqit/resolvers 0.0.11-rc.1 → 0.3.1
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/edge.d.ts +1 -1
- package/dist/edge.d.ts.map +1 -1
- package/dist/edge.js +1 -1
- package/dist/edge.js.map +1 -1
- package/dist/file-markdown.d.ts +7 -3
- package/dist/file-markdown.d.ts.map +1 -1
- package/dist/file-markdown.js +56 -22
- package/dist/file-markdown.js.map +1 -1
- package/dist/filter.d.ts +19 -0
- package/dist/filter.d.ts.map +1 -0
- package/dist/filter.js +43 -0
- package/dist/filter.js.map +1 -0
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/markdown.js +1 -1
- package/dist/markdown.js.map +1 -1
- package/dist/path-pattern.d.ts +19 -1
- package/dist/path-pattern.d.ts.map +1 -1
- package/dist/path-pattern.js +143 -49
- package/dist/path-pattern.js.map +1 -1
- package/dist/static.d.ts.map +1 -1
- package/dist/static.js +3 -2
- package/dist/static.js.map +1 -1
- package/package.json +11 -2
package/dist/edge.d.ts
CHANGED
package/dist/edge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../src/edge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../src/edge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/edge.js
CHANGED
package/dist/edge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge.js","sourceRoot":"","sources":["../src/edge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"edge.js","sourceRoot":"","sources":["../src/edge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/file-markdown.d.ts
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* Optimized for reading only what's needed based on the query.
|
|
6
6
|
*/
|
|
7
7
|
import type { Resolver, StandardSchema, Infer } from "piqit";
|
|
8
|
-
import { type PathParams } from "./path-pattern";
|
|
9
|
-
import { type FrontmatterParseOptions } from "./frontmatter";
|
|
10
|
-
import { type BodyOptions, type BodyResult, type Heading } from "./markdown";
|
|
8
|
+
import { type PathParams } from "./path-pattern.js";
|
|
9
|
+
import { type FrontmatterParseOptions } from "./frontmatter.js";
|
|
10
|
+
import { type BodyOptions, type BodyResult, type Heading } from "./markdown.js";
|
|
11
11
|
/**
|
|
12
12
|
* Options for creating a file markdown resolver.
|
|
13
13
|
*/
|
|
@@ -44,6 +44,10 @@ export interface FileMarkdownResult<TParams, TFrontmatter, TBody extends BodyRes
|
|
|
44
44
|
params: TParams;
|
|
45
45
|
frontmatter: TFrontmatter;
|
|
46
46
|
body: TBody;
|
|
47
|
+
/** Source file location, selectable as 'file.path' */
|
|
48
|
+
file: {
|
|
49
|
+
path: string;
|
|
50
|
+
};
|
|
47
51
|
}
|
|
48
52
|
/**
|
|
49
53
|
* Type for body shape based on options.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-markdown.d.ts","sourceRoot":"","sources":["../src/file-markdown.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC5D,OAAO,EAAsC,KAAK,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"file-markdown.d.ts","sourceRoot":"","sources":["../src/file-markdown.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC5D,OAAO,EAAsC,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACvF,OAAO,EAML,KAAK,uBAAuB,EAC7B,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,OAAO,EACb,MAAM,eAAe,CAAA;AAOtB;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAClC,KAAK,SAAS,MAAM,EACpB,YAAY,SAAS,cAAc,EACnC,KAAK,SAAS,WAAW;IAEzB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,IAAI,EAAE,KAAK,CAAA;IAEX;;;OAGG;IACH,WAAW,EAAE,YAAY,CAAA;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,uBAAuB,CAAA;IAE1C;;;OAGG;IACH,IAAI,CAAC,EAAE,KAAK,CAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CACjC,OAAO,EACP,YAAY,EACZ,KAAK,SAAS,UAAU;IAExB,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,YAAY,CAAA;IACzB,IAAI,EAAE,KAAK,CAAA;IACX,sDAAsD;IACtD,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CACvB;AAED;;GAEG;AACH,KAAK,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,SAAS,IAAI,CAAC,SAAS,WAAW,GAC7E;IACE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,GAAG,MAAM,GAAG,KAAK,CAAA;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,MAAM,GAAG,KAAK,CAAA;IAC7C,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,SAAS,IAAI,GAAG,OAAO,EAAE,GAAG,KAAK,CAAA;CACzD,GACD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AAEzB;;GAEG;AACH,KAAK,cAAc,CAAC,CAAC,IAAI;KACtB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACvD,CAAA;AAyID;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,KAAK,SAAS,MAAM,EACpB,YAAY,SAAS,cAAc,EACnC,KAAK,SAAS,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAEjD,OAAO,EAAE,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,GACvD,QAAQ,CACT,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAC1C,YAAY,EACZ,cAAc,CACZ,kBAAkB,CAChB,UAAU,CAAC,KAAK,CAAC,EACjB,KAAK,CAAC,YAAY,CAAC,EACnB,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CACzC,CACF,CACF,CA+LA"}
|
package/dist/file-markdown.js
CHANGED
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
* A resolver for querying markdown files from the filesystem.
|
|
5
5
|
* Optimized for reading only what's needed based on the query.
|
|
6
6
|
*/
|
|
7
|
-
import { compilePattern, createParamsSchema } from "./path-pattern";
|
|
8
|
-
import { FrontmatterParseError, parseFrontmatterStrict, parseFrontmatterPickStrict, readFrontmatterStrict, readFrontmatterPickStrict, } from "./frontmatter";
|
|
9
|
-
import {
|
|
7
|
+
import { compilePattern, createParamsSchema } from "./path-pattern.js";
|
|
8
|
+
import { FrontmatterParseError, parseFrontmatterStrict, parseFrontmatterPickStrict, readFrontmatterStrict, readFrontmatterPickStrict, } from "./frontmatter.js";
|
|
9
|
+
import { matchesFilter } from "./filter.js";
|
|
10
|
+
import { parseMarkdownBody, } from "./markdown.js";
|
|
10
11
|
import path from "node:path";
|
|
11
12
|
// =============================================================================
|
|
12
13
|
// Result Schema Factory
|
|
@@ -71,6 +72,12 @@ function needsBody(selectPaths) {
|
|
|
71
72
|
function needsParams(selectPaths) {
|
|
72
73
|
return selectPaths.some((p) => p.startsWith("params.") || p === "params.*");
|
|
73
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Check if any select paths require the source file info.
|
|
77
|
+
*/
|
|
78
|
+
function needsFile(selectPaths) {
|
|
79
|
+
return selectPaths.some((p) => p.startsWith("file.") || p === "file.*");
|
|
80
|
+
}
|
|
74
81
|
/**
|
|
75
82
|
* Get which body parts are needed based on select paths.
|
|
76
83
|
*/
|
|
@@ -90,18 +97,6 @@ function getNeededBodyParts(selectPaths) {
|
|
|
90
97
|
}
|
|
91
98
|
return result;
|
|
92
99
|
}
|
|
93
|
-
/**
|
|
94
|
-
* Check if filter constraints match frontmatter.
|
|
95
|
-
* Simple equality check for now.
|
|
96
|
-
*/
|
|
97
|
-
function matchesFilter(frontmatter, filter) {
|
|
98
|
-
for (const [key, value] of Object.entries(filter)) {
|
|
99
|
-
if (frontmatter[key] !== value) {
|
|
100
|
-
return false;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
100
|
function getFrontmatterKeys(selectPaths, filter) {
|
|
106
101
|
let wantAll = false;
|
|
107
102
|
const keys = new Set();
|
|
@@ -151,7 +146,24 @@ export function fileMarkdown(options) {
|
|
|
151
146
|
// Create schemas
|
|
152
147
|
const scanSchema = createParamsSchema(pattern);
|
|
153
148
|
const resultSchema = createResultSchema(pattern.paramNames, options.frontmatter, bodyOptions);
|
|
149
|
+
// Frontmatter keys are introspectable when the schema is a Zod object
|
|
150
|
+
// (StandardSchema itself has no field enumeration)
|
|
151
|
+
const frontmatterShape = options.frontmatter.shape;
|
|
152
|
+
const filterKeys = frontmatterShape ? Object.keys(frontmatterShape) : undefined;
|
|
153
|
+
const selectPaths = [
|
|
154
|
+
...pattern.paramNames.map((name) => `params.${name}`),
|
|
155
|
+
...(filterKeys?.map((key) => `frontmatter.${key}`) ?? ["frontmatter.*"]),
|
|
156
|
+
...["raw", "html", "headings"]
|
|
157
|
+
.filter((part) => bodyOptions[part])
|
|
158
|
+
.map((part) => `body.${part}`),
|
|
159
|
+
"file.path",
|
|
160
|
+
];
|
|
154
161
|
return {
|
|
162
|
+
meta: {
|
|
163
|
+
scanKeys: [...pattern.paramNames],
|
|
164
|
+
filterKeys,
|
|
165
|
+
selectPaths,
|
|
166
|
+
},
|
|
155
167
|
schema: {
|
|
156
168
|
scanParams: scanSchema,
|
|
157
169
|
filterParams: options.frontmatter,
|
|
@@ -159,16 +171,22 @@ export function fileMarkdown(options) {
|
|
|
159
171
|
},
|
|
160
172
|
async resolve(spec) {
|
|
161
173
|
const results = [];
|
|
162
|
-
// 1. Generate glob
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
174
|
+
// 1. Generate glob variants from scan constraints (optional path
|
|
175
|
+
// segments produce multiple globs)
|
|
176
|
+
const scanConstraints = spec.scan;
|
|
177
|
+
const globPatterns = pattern.toGlobs(scanConstraints);
|
|
178
|
+
// 2. Find matching files using Bun.Glob, deduped across variants
|
|
179
|
+
const fileSet = new Set();
|
|
180
|
+
for (const globPattern of globPatterns) {
|
|
181
|
+
const glob = new Bun.Glob(globPattern);
|
|
182
|
+
for await (const file of glob.scan({ cwd: basePath, absolute: false })) {
|
|
183
|
+
fileSet.add(file);
|
|
184
|
+
}
|
|
169
185
|
}
|
|
186
|
+
const files = [...fileSet];
|
|
170
187
|
// 3. Determine what we need to read
|
|
171
188
|
const wantParams = needsParams(spec.select);
|
|
189
|
+
const wantFile = needsFile(spec.select);
|
|
172
190
|
const wantFrontmatter = needsFrontmatter(spec.select);
|
|
173
191
|
const wantBody = needsBody(spec.select);
|
|
174
192
|
const hasFilter = spec.filter && Object.keys(spec.filter).length > 0;
|
|
@@ -180,6 +198,19 @@ export function fileMarkdown(options) {
|
|
|
180
198
|
const params = pattern.match(relativePath);
|
|
181
199
|
if (!params)
|
|
182
200
|
continue;
|
|
201
|
+
// Variant globs can over-match, so re-verify scan constraints
|
|
202
|
+
// against the extracted params
|
|
203
|
+
if (scanConstraints) {
|
|
204
|
+
let mismatch = false;
|
|
205
|
+
for (const [key, value] of Object.entries(scanConstraints)) {
|
|
206
|
+
if (value !== undefined && value !== null && params[key] !== String(value)) {
|
|
207
|
+
mismatch = true;
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
if (mismatch)
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
183
214
|
const fullPath = path.join(basePath, relativePath);
|
|
184
215
|
// Read file content only if needed
|
|
185
216
|
let content = null;
|
|
@@ -227,6 +258,9 @@ export function fileMarkdown(options) {
|
|
|
227
258
|
if (wantParams) {
|
|
228
259
|
result.params = params;
|
|
229
260
|
}
|
|
261
|
+
if (wantFile) {
|
|
262
|
+
result.file = { path: path.join(options.base, relativePath) };
|
|
263
|
+
}
|
|
230
264
|
if (wantFrontmatter) {
|
|
231
265
|
result.frontmatter = frontmatter;
|
|
232
266
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-markdown.js","sourceRoot":"","sources":["../src/file-markdown.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAmB,MAAM,
|
|
1
|
+
{"version":3,"file":"file-markdown.js","sourceRoot":"","sources":["../src/file-markdown.ts"],"names":[],"mappings":"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"}
|
package/dist/filter.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Filter Matching
|
|
3
|
+
*
|
|
4
|
+
* One predicate for all resolvers so filter semantics stay identical
|
|
5
|
+
* across fileMarkdown, staticContent, and anything else.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Check a single field value against a filter constraint.
|
|
9
|
+
*
|
|
10
|
+
* Exact values compare with strict equality. { contains } substring-matches
|
|
11
|
+
* string fields, and string-array fields when any element contains the
|
|
12
|
+
* needle. Matching is case-sensitive.
|
|
13
|
+
*/
|
|
14
|
+
export declare function matchesConstraint(actual: unknown, constraint: unknown): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Check a record against every constraint in a filter object.
|
|
17
|
+
*/
|
|
18
|
+
export declare function matchesFilter(record: Record<string, unknown>, filter: Record<string, unknown>): boolean;
|
|
19
|
+
//# sourceMappingURL=filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAU/E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAOT"}
|
package/dist/filter.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Filter Matching
|
|
3
|
+
*
|
|
4
|
+
* One predicate for all resolvers so filter semantics stay identical
|
|
5
|
+
* across fileMarkdown, staticContent, and anything else.
|
|
6
|
+
*/
|
|
7
|
+
function isFilterOperator(value) {
|
|
8
|
+
return (value !== null &&
|
|
9
|
+
typeof value === "object" &&
|
|
10
|
+
!Array.isArray(value) &&
|
|
11
|
+
"contains" in value);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Check a single field value against a filter constraint.
|
|
15
|
+
*
|
|
16
|
+
* Exact values compare with strict equality. { contains } substring-matches
|
|
17
|
+
* string fields, and string-array fields when any element contains the
|
|
18
|
+
* needle. Matching is case-sensitive.
|
|
19
|
+
*/
|
|
20
|
+
export function matchesConstraint(actual, constraint) {
|
|
21
|
+
if (isFilterOperator(constraint)) {
|
|
22
|
+
const needle = constraint.contains;
|
|
23
|
+
if (typeof actual === "string")
|
|
24
|
+
return actual.includes(needle);
|
|
25
|
+
if (Array.isArray(actual)) {
|
|
26
|
+
return actual.some((v) => typeof v === "string" && v.includes(needle));
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
return actual === constraint;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check a record against every constraint in a filter object.
|
|
34
|
+
*/
|
|
35
|
+
export function matchesFilter(record, filter) {
|
|
36
|
+
for (const [key, constraint] of Object.entries(filter)) {
|
|
37
|
+
if (!matchesConstraint(record[key], constraint)) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,UAAU,IAAI,KAAK,CACpB,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAe,EAAE,UAAmB;IACpE,IAAI,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAA;QAClC,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QACxE,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,MAAM,KAAK,UAAU,CAAA;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,MAA+B,EAC/B,MAA+B;IAE/B,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC;YAChD,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @packageDocumentation
|
|
9
9
|
*/
|
|
10
|
-
export { fileMarkdown } from "./file-markdown";
|
|
11
|
-
export type { FileMarkdownOptions, FileMarkdownResult } from "./file-markdown";
|
|
12
|
-
export { staticContent, staticResolver } from "./static";
|
|
13
|
-
export { compilePattern, createParamsSchema } from "./path-pattern";
|
|
14
|
-
export type { CompiledPattern, ExtractParams, PathParams, } from "./path-pattern";
|
|
15
|
-
export { FrontmatterParseError, parseFrontmatter, parseFrontmatterStrict, parseFrontmatterPickStrict, extractFrontmatterString, getFrontmatterEndOffset, readFrontmatter, readFrontmatterPickStrict, readFrontmatterWithOffset, } from "./frontmatter";
|
|
16
|
-
export { parseMarkdownBody, extractHeadings, slugify, markdownToHtml, readMarkdownBody, readParsedBody, } from "./markdown";
|
|
17
|
-
export type { BodyOptions, BodyResult, BodyShape, Heading, } from "./markdown";
|
|
10
|
+
export { fileMarkdown } from "./file-markdown.js";
|
|
11
|
+
export type { FileMarkdownOptions, FileMarkdownResult } from "./file-markdown.js";
|
|
12
|
+
export { staticContent, staticResolver } from "./static.js";
|
|
13
|
+
export { compilePattern, createParamsSchema } from "./path-pattern.js";
|
|
14
|
+
export type { CompiledPattern, ExtractParams, PathParams, } from "./path-pattern.js";
|
|
15
|
+
export { FrontmatterParseError, parseFrontmatter, parseFrontmatterStrict, parseFrontmatterPickStrict, extractFrontmatterString, getFrontmatterEndOffset, readFrontmatter, readFrontmatterPickStrict, readFrontmatterWithOffset, } from "./frontmatter.js";
|
|
16
|
+
export { parseMarkdownBody, extractHeadings, slugify, markdownToHtml, readMarkdownBody, readParsedBody, } from "./markdown.js";
|
|
17
|
+
export type { BodyOptions, BodyResult, BodyShape, Heading, } from "./markdown.js";
|
|
18
18
|
//# 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;;;;;;;;GAQG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAMjF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAM3D,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtE,YAAY,EACV,eAAe,EACf,aAAa,EACb,UAAU,GACX,MAAM,mBAAmB,CAAA;AAM1B,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAA;AAMzB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,cAAc,GACf,MAAM,eAAe,CAAA;AAEtB,YAAY,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,OAAO,GACR,MAAM,eAAe,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -10,21 +10,21 @@
|
|
|
10
10
|
// =============================================================================
|
|
11
11
|
// Filesystem Resolver (Node.js/Bun only)
|
|
12
12
|
// =============================================================================
|
|
13
|
-
export { fileMarkdown } from "./file-markdown";
|
|
13
|
+
export { fileMarkdown } from "./file-markdown.js";
|
|
14
14
|
// =============================================================================
|
|
15
15
|
// Static Content Resolver (Edge/Workers compatible)
|
|
16
16
|
// =============================================================================
|
|
17
|
-
export { staticContent, staticResolver } from "./static";
|
|
17
|
+
export { staticContent, staticResolver } from "./static.js";
|
|
18
18
|
// =============================================================================
|
|
19
19
|
// Path Pattern Utilities
|
|
20
20
|
// =============================================================================
|
|
21
|
-
export { compilePattern, createParamsSchema } from "./path-pattern";
|
|
21
|
+
export { compilePattern, createParamsSchema } from "./path-pattern.js";
|
|
22
22
|
// =============================================================================
|
|
23
23
|
// Frontmatter Utilities
|
|
24
24
|
// =============================================================================
|
|
25
|
-
export { FrontmatterParseError, parseFrontmatter, parseFrontmatterStrict, parseFrontmatterPickStrict, extractFrontmatterString, getFrontmatterEndOffset, readFrontmatter, readFrontmatterPickStrict, readFrontmatterWithOffset, } from "./frontmatter";
|
|
25
|
+
export { FrontmatterParseError, parseFrontmatter, parseFrontmatterStrict, parseFrontmatterPickStrict, extractFrontmatterString, getFrontmatterEndOffset, readFrontmatter, readFrontmatterPickStrict, readFrontmatterWithOffset, } from "./frontmatter.js";
|
|
26
26
|
// =============================================================================
|
|
27
27
|
// Markdown Utilities
|
|
28
28
|
// =============================================================================
|
|
29
|
-
export { parseMarkdownBody, extractHeadings, slugify, markdownToHtml, readMarkdownBody, readParsedBody, } from "./markdown";
|
|
29
|
+
export { parseMarkdownBody, extractHeadings, slugify, markdownToHtml, readMarkdownBody, readParsedBody, } from "./markdown.js";
|
|
30
30
|
//# 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;;;;;;;;GAQG;AAEH,gFAAgF;AAChF,yCAAyC;AACzC,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,gFAAgF;AAChF,yCAAyC;AACzC,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,gFAAgF;AAChF,oDAAoD;AACpD,gFAAgF;AAEhF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE3D,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAOtE,gFAAgF;AAChF,wBAAwB;AACxB,gFAAgF;AAEhF,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACtB,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAA;AAEzB,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,cAAc,GACf,MAAM,eAAe,CAAA"}
|
package/dist/markdown.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* - HTML (basic conversion)
|
|
7
7
|
* - Headings with slugs
|
|
8
8
|
*/
|
|
9
|
-
import { getFrontmatterEndOffset } from "./frontmatter";
|
|
9
|
+
import { getFrontmatterEndOffset } from "./frontmatter.js";
|
|
10
10
|
// =============================================================================
|
|
11
11
|
// Markdown Parsing
|
|
12
12
|
// =============================================================================
|
package/dist/markdown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"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"}
|
package/dist/path-pattern.d.ts
CHANGED
|
@@ -10,12 +10,16 @@
|
|
|
10
10
|
import { StandardSchema } from "piqit";
|
|
11
11
|
/**
|
|
12
12
|
* Extract params from a path pattern string at the type level.
|
|
13
|
+
* Params inside `<...>` optional segments become optional properties.
|
|
13
14
|
*
|
|
14
15
|
* @example
|
|
15
16
|
* type Params = ExtractParams<'{year}/{slug}.md'>
|
|
16
17
|
* // = { year: string } & { slug: string }
|
|
18
|
+
*
|
|
19
|
+
* type Params = ExtractParams<'{date}< {time}> {slug}.md'>
|
|
20
|
+
* // = { date: string } & { time?: string } & { slug: string }
|
|
17
21
|
*/
|
|
18
|
-
export type ExtractParams<P extends string> = P extends `${string}{${infer Param}}${infer Rest}` ? {
|
|
22
|
+
export type ExtractParams<P extends string> = P extends `${infer Head}<${infer Opt}>${infer Rest}` ? ExtractParams<Head> & Partial<ExtractParams<Opt>> & ExtractParams<Rest> : P extends `${string}{${infer Param}}${infer Rest}` ? {
|
|
19
23
|
[K in ExtractParamName<Param>]: string;
|
|
20
24
|
} & ExtractParams<Rest> : {};
|
|
21
25
|
type ExtractParamName<T extends string> = T extends `${infer Name}:${string}` ? Name : T;
|
|
@@ -53,8 +57,19 @@ export interface CompiledPattern {
|
|
|
53
57
|
* pattern.toGlob({ year: '2024' }) // '2024/*.md'
|
|
54
58
|
*/
|
|
55
59
|
toGlob(constraints?: Record<string, unknown>): string;
|
|
60
|
+
/**
|
|
61
|
+
* Generate all glob variants for a pattern with optional segments.
|
|
62
|
+
* Each `<...>` segment doubles the variants (present/absent); variants
|
|
63
|
+
* that omit a constrained param are pruned. Patterns without optional
|
|
64
|
+
* segments yield a single glob.
|
|
65
|
+
*
|
|
66
|
+
* @param constraints - Optional param values to use instead of wildcards
|
|
67
|
+
* @returns Deduplicated glob pattern strings
|
|
68
|
+
*/
|
|
69
|
+
toGlobs(constraints?: Record<string, unknown>): string[];
|
|
56
70
|
/**
|
|
57
71
|
* Match a path against this pattern and extract params.
|
|
72
|
+
* Params in unmatched optional segments are omitted from the result.
|
|
58
73
|
*
|
|
59
74
|
* @param path - The file path to match (relative to base)
|
|
60
75
|
* @returns The extracted params, or null if no match
|
|
@@ -78,6 +93,9 @@ export interface CompiledPattern {
|
|
|
78
93
|
/**
|
|
79
94
|
* Compile a path pattern string into a usable pattern object.
|
|
80
95
|
*
|
|
96
|
+
* Supports `{param}` placeholders, `{param:regex}` inline constraints, and
|
|
97
|
+
* `<...>` optional segments (e.g. `'{date}< {time}> - {slug}.md'`).
|
|
98
|
+
*
|
|
81
99
|
* @param pattern - The pattern string like '{year}/{slug}.md'
|
|
82
100
|
* @returns A CompiledPattern instance
|
|
83
101
|
*
|
|
@@ -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
|
|
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;;;;;;;;;;GAUG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IACxC,CAAC,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM,GAAG,IAAI,MAAM,IAAI,EAAE,GAChD,aAAa,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,GACvE,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,GAChD;KAAG,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,GAAG,MAAM;CAAE,GAAG,aAAa,CAAC,IAAI,CAAC,GAChE,EAAE,CAAA;AAEV,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;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,CAAA;IAExD;;;;;;;;;;OAUG;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;AAgFD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CA8H/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
|
@@ -19,9 +19,63 @@ const PARAM_REGEX = /\{([a-zA-Z_][a-zA-Z0-9_]*)(?::([^{}]+))?\}/g;
|
|
|
19
19
|
* Characters that need escaping in regex.
|
|
20
20
|
*/
|
|
21
21
|
const REGEX_ESCAPE = /[.*+?^${}()|[\]\\]/g;
|
|
22
|
+
/**
|
|
23
|
+
* Characters with special meaning in glob patterns.
|
|
24
|
+
* Literal text is escaped so paths containing e.g. `[id]` match verbatim.
|
|
25
|
+
*/
|
|
26
|
+
const GLOB_ESCAPE = /[*?[\]{}()!\\]/g;
|
|
27
|
+
function parseParts(segment) {
|
|
28
|
+
const parts = [];
|
|
29
|
+
const regex = new RegExp(PARAM_REGEX.source, "g");
|
|
30
|
+
let cursor = 0;
|
|
31
|
+
let match;
|
|
32
|
+
while ((match = regex.exec(segment)) !== null) {
|
|
33
|
+
if (match.index > cursor) {
|
|
34
|
+
parts.push({ kind: "literal", value: segment.slice(cursor, match.index) });
|
|
35
|
+
}
|
|
36
|
+
parts.push({ kind: "param", name: match[1], constraint: match[2] || undefined });
|
|
37
|
+
cursor = match.index + match[0].length;
|
|
38
|
+
}
|
|
39
|
+
if (cursor < segment.length) {
|
|
40
|
+
parts.push({ kind: "literal", value: segment.slice(cursor) });
|
|
41
|
+
}
|
|
42
|
+
return parts;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Split a pattern into chunks at `<...>` optional segment boundaries.
|
|
46
|
+
* Nesting is not supported.
|
|
47
|
+
*/
|
|
48
|
+
function parseChunks(pattern) {
|
|
49
|
+
const chunks = [];
|
|
50
|
+
let cursor = 0;
|
|
51
|
+
while (cursor < pattern.length) {
|
|
52
|
+
const open = pattern.indexOf("<", cursor);
|
|
53
|
+
if (open === -1) {
|
|
54
|
+
chunks.push({ optional: false, parts: parseParts(pattern.slice(cursor)) });
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
const close = pattern.indexOf(">", open);
|
|
58
|
+
if (close === -1) {
|
|
59
|
+
throw new Error(`Unclosed optional segment in pattern: ${pattern}`);
|
|
60
|
+
}
|
|
61
|
+
const inner = pattern.slice(open + 1, close);
|
|
62
|
+
if (inner.includes("<")) {
|
|
63
|
+
throw new Error(`Nested optional segments are not supported: ${pattern}`);
|
|
64
|
+
}
|
|
65
|
+
if (open > cursor) {
|
|
66
|
+
chunks.push({ optional: false, parts: parseParts(pattern.slice(cursor, open)) });
|
|
67
|
+
}
|
|
68
|
+
chunks.push({ optional: true, parts: parseParts(inner) });
|
|
69
|
+
cursor = close + 1;
|
|
70
|
+
}
|
|
71
|
+
return chunks;
|
|
72
|
+
}
|
|
22
73
|
/**
|
|
23
74
|
* Compile a path pattern string into a usable pattern object.
|
|
24
75
|
*
|
|
76
|
+
* Supports `{param}` placeholders, `{param:regex}` inline constraints, and
|
|
77
|
+
* `<...>` optional segments (e.g. `'{date}< {time}> - {slug}.md'`).
|
|
78
|
+
*
|
|
25
79
|
* @param pattern - The pattern string like '{year}/{slug}.md'
|
|
26
80
|
* @returns A CompiledPattern instance
|
|
27
81
|
*
|
|
@@ -31,58 +85,83 @@ const REGEX_ESCAPE = /[.*+?^${}()|[\]\\]/g;
|
|
|
31
85
|
* pattern.match('2024/hello.md') // { year: '2024', slug: 'hello' }
|
|
32
86
|
*/
|
|
33
87
|
export function compilePattern(pattern) {
|
|
34
|
-
|
|
88
|
+
const chunks = parseChunks(pattern);
|
|
35
89
|
const paramNames = [];
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
raw: match[0],
|
|
45
|
-
name,
|
|
46
|
-
constraint,
|
|
47
|
-
});
|
|
90
|
+
const paramChunk = new Map();
|
|
91
|
+
for (const chunk of chunks) {
|
|
92
|
+
for (const part of chunk.parts) {
|
|
93
|
+
if (part.kind === "param") {
|
|
94
|
+
paramNames.push(part.name);
|
|
95
|
+
paramChunk.set(part.name, chunk);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
48
98
|
}
|
|
49
|
-
// Build the match regex
|
|
50
|
-
// capturing groups
|
|
99
|
+
// Build the match regex. Only param groups capture, so capture order
|
|
100
|
+
// follows param order even with optional (non-capturing) groups.
|
|
51
101
|
let regexPattern = "";
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
102
|
+
for (const chunk of chunks) {
|
|
103
|
+
let sub = "";
|
|
104
|
+
for (const part of chunk.parts) {
|
|
105
|
+
if (part.kind === "literal") {
|
|
106
|
+
sub += part.value.replace(REGEX_ESCAPE, "\\$&");
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
// Non-greedy groups so adjacent params separated by literals
|
|
110
|
+
// (e.g. "wp-{priority}-{name}.md") split as expected.
|
|
111
|
+
sub += `(${part.constraint?.trim() || "[^/]+?"})`;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
regexPattern += chunk.optional ? `(?:${sub})?` : sub;
|
|
65
115
|
}
|
|
66
|
-
regexPattern += pattern.slice(cursor).replace(REGEX_ESCAPE, "\\$&");
|
|
67
116
|
const matchRegex = new RegExp(`^${regexPattern}$`);
|
|
117
|
+
function toGlobs(constraints) {
|
|
118
|
+
const optionals = chunks.filter((c) => c.optional);
|
|
119
|
+
const globs = new Set();
|
|
120
|
+
// Enumerate include/exclude combinations of optional chunks
|
|
121
|
+
for (let mask = 0; mask < 1 << optionals.length; mask++) {
|
|
122
|
+
const included = new Set();
|
|
123
|
+
optionals.forEach((chunk, i) => {
|
|
124
|
+
if (mask & (1 << i))
|
|
125
|
+
included.add(chunk);
|
|
126
|
+
});
|
|
127
|
+
// Prune variants that omit a constrained param
|
|
128
|
+
const omitsConstrained = [...paramChunk.entries()].some(([name, chunk]) => chunk.optional &&
|
|
129
|
+
!included.has(chunk) &&
|
|
130
|
+
constraints?.[name] !== undefined &&
|
|
131
|
+
constraints?.[name] !== null);
|
|
132
|
+
if (omitsConstrained)
|
|
133
|
+
continue;
|
|
134
|
+
let glob = "";
|
|
135
|
+
for (const chunk of chunks) {
|
|
136
|
+
if (chunk.optional && !included.has(chunk))
|
|
137
|
+
continue;
|
|
138
|
+
for (const part of chunk.parts) {
|
|
139
|
+
if (part.kind === "literal") {
|
|
140
|
+
glob += part.value.replace(GLOB_ESCAPE, "\\$&");
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
const value = constraints?.[part.name];
|
|
144
|
+
glob +=
|
|
145
|
+
value !== undefined && value !== null
|
|
146
|
+
? String(value).replace(GLOB_ESCAPE, "\\$&")
|
|
147
|
+
: "*";
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
globs.add(glob);
|
|
152
|
+
}
|
|
153
|
+
return [...globs];
|
|
154
|
+
}
|
|
68
155
|
return {
|
|
69
156
|
pattern,
|
|
70
157
|
paramNames,
|
|
158
|
+
toGlobs,
|
|
71
159
|
toGlob(constraints) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const value = constraints?.[placeholder.name];
|
|
76
|
-
if (value !== undefined && value !== null) {
|
|
77
|
-
// Use the constrained value
|
|
78
|
-
glob = glob.replace(placeholder.raw, String(value));
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
// Use a wildcard - * matches anything except /
|
|
82
|
-
glob = glob.replace(placeholder.raw, "*");
|
|
83
|
-
}
|
|
160
|
+
const globs = toGlobs(constraints);
|
|
161
|
+
if (globs.length > 1) {
|
|
162
|
+
throw new Error(`Pattern has optional segments producing ${globs.length} glob variants; use toGlobs(): ${pattern}`);
|
|
84
163
|
}
|
|
85
|
-
return
|
|
164
|
+
return globs[0];
|
|
86
165
|
},
|
|
87
166
|
match(path) {
|
|
88
167
|
const result = matchRegex.exec(path);
|
|
@@ -90,18 +169,33 @@ export function compilePattern(pattern) {
|
|
|
90
169
|
return null;
|
|
91
170
|
const params = {};
|
|
92
171
|
for (let i = 0; i < paramNames.length; i++) {
|
|
93
|
-
|
|
172
|
+
if (result[i + 1] !== undefined) {
|
|
173
|
+
params[paramNames[i]] = result[i + 1];
|
|
174
|
+
}
|
|
94
175
|
}
|
|
95
176
|
return params;
|
|
96
177
|
},
|
|
97
178
|
build(params) {
|
|
98
|
-
let result =
|
|
99
|
-
for (const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
179
|
+
let result = "";
|
|
180
|
+
for (const chunk of chunks) {
|
|
181
|
+
if (chunk.optional) {
|
|
182
|
+
const chunkParams = chunk.parts.filter((p) => p.kind === "param");
|
|
183
|
+
if (!chunkParams.every((p) => p.kind === "param" && params[p.name] !== undefined)) {
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
for (const part of chunk.parts) {
|
|
188
|
+
if (part.kind === "literal") {
|
|
189
|
+
result += part.value;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
const value = params[part.name];
|
|
193
|
+
if (value === undefined) {
|
|
194
|
+
throw new Error(`Missing required param: ${part.name}`);
|
|
195
|
+
}
|
|
196
|
+
result += value;
|
|
197
|
+
}
|
|
103
198
|
}
|
|
104
|
-
result = result.replace(placeholder.raw, value);
|
|
105
199
|
}
|
|
106
200
|
return result;
|
|
107
201
|
},
|
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/dist/static.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AA4HrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAC5C,IAAI,EAAE,CAAC,EAAE,GACR,QAAQ,CACT,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAChD,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAChD,cAAc,CAAC,CAAC,CAAC,CAClB,CAiCA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,sBAAgB,CAAA"}
|
package/dist/static.js
CHANGED
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
* .select("params.slug", "frontmatter.title")
|
|
28
28
|
* .exec();
|
|
29
29
|
*/
|
|
30
|
+
import { matchesConstraint } from "./filter.js";
|
|
30
31
|
// =============================================================================
|
|
31
32
|
// Filter Helpers
|
|
32
33
|
// =============================================================================
|
|
@@ -52,8 +53,8 @@ function defaultFilter(item, filter) {
|
|
|
52
53
|
if (!frontmatter) {
|
|
53
54
|
return Object.keys(filter).length === 0;
|
|
54
55
|
}
|
|
55
|
-
for (const [key,
|
|
56
|
-
if (frontmatter[key]
|
|
56
|
+
for (const [key, constraint] of Object.entries(filter)) {
|
|
57
|
+
if (!matchesConstraint(frontmatter[key], constraint)) {
|
|
57
58
|
return false;
|
|
58
59
|
}
|
|
59
60
|
}
|
package/dist/static.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static.js","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;
|
|
1
|
+
{"version":3,"file":"static.js","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@piqit/resolvers",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/djgrant/piq.git",
|
|
9
|
+
"directory": "packages/resolvers"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/djgrant/piq#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/djgrant/piq/issues"
|
|
14
|
+
},
|
|
6
15
|
"types": "./dist/index.d.ts",
|
|
7
16
|
"exports": {
|
|
8
17
|
".": {
|
|
@@ -25,7 +34,7 @@
|
|
|
25
34
|
"dist"
|
|
26
35
|
],
|
|
27
36
|
"dependencies": {
|
|
28
|
-
"piqit": "0.
|
|
37
|
+
"piqit": "0.3.1"
|
|
29
38
|
},
|
|
30
39
|
"devDependencies": {
|
|
31
40
|
"@types/bun": "latest",
|