@byc/json-ptr-compiler 0.0.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/bun.d.mts ADDED
@@ -0,0 +1,2 @@
1
+ import { bunPlugin } from "./index.mjs";
2
+ export { bunPlugin as default };
package/dist/bun.mjs ADDED
@@ -0,0 +1,7 @@
1
+ import { t as bunPlugin } from "./src-DRw3NwHu.mjs";
2
+ //#region src/bun.ts
3
+ var bun_default = bunPlugin;
4
+ //#endregion
5
+ export { bun_default as default };
6
+
7
+ //# sourceMappingURL=bun.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bun.mjs","names":[],"sources":["../src/bun.ts"],"sourcesContent":["\r\nimport { bunPlugin } from '.';\r\n\r\nexport default bunPlugin;\r\n"],"mappings":";;AAGA,IAAA,cAAe"}
@@ -0,0 +1,2 @@
1
+ import { esbuildPlugin } from "./index.mjs";
2
+ export { esbuildPlugin as default };
@@ -0,0 +1,7 @@
1
+ import { n as esbuildPlugin } from "./src-DRw3NwHu.mjs";
2
+ //#region src/esbuild.ts
3
+ var esbuild_default = esbuildPlugin;
4
+ //#endregion
5
+ export { esbuild_default as default };
6
+
7
+ //# sourceMappingURL=esbuild.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esbuild.mjs","names":[],"sources":["../src/esbuild.ts"],"sourcesContent":["\r\nimport { esbuildPlugin } from '.';\r\n\r\nexport default esbuildPlugin;\r\n"],"mappings":";;AAGA,IAAA,kBAAe"}
@@ -0,0 +1,2 @@
1
+ import { farmPlugin } from "./index.mjs";
2
+ export { farmPlugin as default };
package/dist/farm.mjs ADDED
@@ -0,0 +1,7 @@
1
+ import { r as farmPlugin } from "./src-DRw3NwHu.mjs";
2
+ //#region src/farm.ts
3
+ var farm_default = farmPlugin;
4
+ //#endregion
5
+ export { farm_default as default };
6
+
7
+ //# sourceMappingURL=farm.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"farm.mjs","names":[],"sources":["../src/farm.ts"],"sourcesContent":["\r\nimport { farmPlugin } from '.';\r\n\r\nexport default farmPlugin;\r\n"],"mappings":";;AAGA,IAAA,eAAe"}
@@ -0,0 +1,16 @@
1
+ import { UnpluginFactory } from "unplugin";
2
+
3
+ //#region src/index.d.ts
4
+ declare const unpluginFactory: UnpluginFactory<{} | undefined>;
5
+ declare const unplugin: unplugin.UnpluginInstance<{} | undefined, boolean>;
6
+ declare const vitePlugin: (options?: {} | undefined) => unplugin.VitePlugin<any> | unplugin.VitePlugin<any>[];
7
+ declare const rollupPlugin: (options?: {} | undefined) => unplugin.RollupPlugin<any> | unplugin.RollupPlugin<any>[];
8
+ declare const rolldownPlugin: (options?: {} | undefined) => unplugin.RolldownPlugin<any> | unplugin.RolldownPlugin<any>[];
9
+ declare const webpackPlugin: (options?: {} | undefined) => WebpackPluginInstance;
10
+ declare const rspackPlugin: (options?: {} | undefined) => RspackPluginInstance;
11
+ declare const esbuildPlugin: (options?: {} | undefined) => unplugin.EsbuildPlugin;
12
+ declare const farmPlugin: (options?: {} | undefined) => JsPlugin;
13
+ declare const bunPlugin: (options?: {} | undefined) => BunPlugin;
14
+ //#endregion
15
+ export { bunPlugin, unplugin as default, unplugin, esbuildPlugin, farmPlugin, rolldownPlugin, rollupPlugin, rspackPlugin, unpluginFactory, vitePlugin, webpackPlugin };
16
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"mappings":";;;cASa,eAAA,EAAiB,eAAA;AAAA,cA8DjB,QAAA,EAA0D,QAAA,CAAlD,gBAAA;AAAA,cAIR,UAAA,GAAU,OAAA,sBAAgB,QAAA,CAAhB,UAAA,QAAA,QAAA,CAAA,UAAA;AAAA,cACV,YAAA,GAAY,OAAA,sBAAkB,QAAA,CAAlB,YAAA,QAAA,QAAA,CAAA,YAAA;AAAA,cACZ,cAAA,GAAc,OAAA,sBAAoB,QAAA,CAApB,cAAA,QAAA,QAAA,CAAA,cAAA;AAAA,cACd,aAAA,GAAa,OAAA,sBAAA,qBAAA;AAAA,cACb,YAAA,GAAY,OAAA,sBAAA,oBAAA;AAAA,cACZ,aAAA,GAAa,OAAA,sBAAmB,QAAA,CAAnB,aAAA;AAAA,cACb,UAAA,GAAU,OAAA,sBAAA,QAAA;AAAA,cACV,SAAA,GAAS,OAAA,sBAAA,SAAA"}
package/dist/index.mjs ADDED
@@ -0,0 +1,2 @@
1
+ import { a as rollupPlugin, c as unpluginFactory, i as rolldownPlugin, l as vitePlugin, n as esbuildPlugin, o as rspackPlugin, r as farmPlugin, s as unplugin, t as bunPlugin, u as webpackPlugin } from "./src-DRw3NwHu.mjs";
2
+ export { bunPlugin, unplugin as default, unplugin, esbuildPlugin, farmPlugin, rolldownPlugin, rollupPlugin, rspackPlugin, unpluginFactory, vitePlugin, webpackPlugin };
@@ -0,0 +1,2 @@
1
+ import { rolldownPlugin } from "./index.mjs";
2
+ export { rolldownPlugin as default };
@@ -0,0 +1,7 @@
1
+ import { i as rolldownPlugin } from "./src-DRw3NwHu.mjs";
2
+ //#region src/rolldown.ts
3
+ var rolldown_default = rolldownPlugin;
4
+ //#endregion
5
+ export { rolldown_default as default };
6
+
7
+ //# sourceMappingURL=rolldown.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rolldown.mjs","names":[],"sources":["../src/rolldown.ts"],"sourcesContent":["\r\nimport { rolldownPlugin } from '.';\r\n\r\nexport default rolldownPlugin;\r\n"],"mappings":";;AAGA,IAAA,mBAAe"}
@@ -0,0 +1,2 @@
1
+ import { rollupPlugin } from "./index.mjs";
2
+ export { rollupPlugin as default };
@@ -0,0 +1,7 @@
1
+ import { a as rollupPlugin } from "./src-DRw3NwHu.mjs";
2
+ //#region src/rollup.ts
3
+ var rollup_default = rollupPlugin;
4
+ //#endregion
5
+ export { rollup_default as default };
6
+
7
+ //# sourceMappingURL=rollup.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollup.mjs","names":[],"sources":["../src/rollup.ts"],"sourcesContent":["\r\nimport { rollupPlugin } from '.';\r\n\r\nexport default rollupPlugin;\r\n"],"mappings":";;AAGA,IAAA,iBAAe"}
@@ -0,0 +1,2 @@
1
+ import { rspackPlugin } from "./index.mjs";
2
+ export { rspackPlugin as default };
@@ -0,0 +1,7 @@
1
+ import { o as rspackPlugin } from "./src-DRw3NwHu.mjs";
2
+ //#region src/rspack.ts
3
+ var rspack_default = rspackPlugin;
4
+ //#endregion
5
+ export { rspack_default as default };
6
+
7
+ //# sourceMappingURL=rspack.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rspack.mjs","names":[],"sources":["../src/rspack.ts"],"sourcesContent":["\r\nimport { rspackPlugin } from '.';\r\n\r\nexport default rspackPlugin;\r\n"],"mappings":";;AAGA,IAAA,iBAAe"}
@@ -0,0 +1,108 @@
1
+ import MagicString from "magic-string";
2
+ import { createUnplugin } from "unplugin";
3
+ //#region ../shared/src/constants.ts
4
+ /**
5
+ * 匹配严格的非负整数(不含前导零,除了 0 本身)
6
+ */
7
+ const RE_STRICT_UINT = /^(?:0|[1-9]\d*)$/;
8
+ /**
9
+ * 危险键名集合,用于防止原型污染攻击
10
+ */
11
+ const INVALID_KEYS = new Set([
12
+ "__proto__",
13
+ "constructor",
14
+ "prototype"
15
+ ]);
16
+ /**
17
+ * JSON Pointer 转义符正则表达式
18
+ */
19
+ const RE_ESC_1 = /~1/g;
20
+ const RE_ESC_0 = /~0/g;
21
+ //#endregion
22
+ //#region ../shared/src/decode.ts
23
+ /**
24
+ * 解码 JSON Pointer 的单个键名
25
+ * 将 ~1 还原为 /,将 ~0 还原为 ~
26
+ *
27
+ * @param key - 编码后的键名
28
+ * @returns 解码后的键名
29
+ */
30
+ function decodePointerKey(key) {
31
+ return key.replace(RE_ESC_1, "/").replace(RE_ESC_0, "~");
32
+ }
33
+ //#endregion
34
+ //#region src/transformer.ts
35
+ function transformPointerToChain(path, receiver) {
36
+ if (path === "" || path === "/") return receiver;
37
+ if (path[0] !== "/") return receiver;
38
+ const segments = path.split("/").slice(1);
39
+ if (segments.length > 1 && segments[segments.length - 1] === "") segments.pop();
40
+ let chain = receiver;
41
+ for (const rawKey of segments) {
42
+ const key = decodePointerKey(rawKey);
43
+ if (INVALID_KEYS.has(key)) throw new Error(`[fast-json-ptr] Security Risk: Forbidden key "${key}" found in static path "${path}"`);
44
+ const accessor = RE_STRICT_UINT.test(key) ? `[${key}]` : `[${JSON.stringify(key)}]`;
45
+ chain += `?.${accessor}`;
46
+ }
47
+ return chain;
48
+ }
49
+ //#endregion
50
+ //#region src/index.ts
51
+ const seekRegex = /(?:_?unref\s*\(\s*(?:\$setup\.|_ctx\.)?seek\s*\)|(?:\$setup\.|_ctx\.)?seek)\s*\(\s*([^,]+)\s*,\s*['"]([^'"]*)['"]\s*\)/g;
52
+ const importRegex = /^\s*import\s+[^'"]*['"]fast-json-ptr['"]\s*;?\s*$/gm;
53
+ const unpluginFactory = () => {
54
+ return {
55
+ name: "fast-json-ptr",
56
+ enforce: "post",
57
+ transformInclude(id) {
58
+ if (id.includes("node_modules")) return false;
59
+ if (id.includes(".vue")) return true;
60
+ const [filepath] = id.split("?");
61
+ if (!filepath) return false;
62
+ return /\.[jt]sx?$/.test(filepath);
63
+ },
64
+ transform(code, id) {
65
+ if (!code.includes("seek") && !code.includes("fast-json-ptr")) return null;
66
+ const s = new MagicString(code);
67
+ const matches = [...code.matchAll(seekRegex)];
68
+ for (let i = matches.length - 1; i >= 0; i--) {
69
+ const m = matches[i];
70
+ if (!m) continue;
71
+ const start = m.index;
72
+ const end = start + m[0].length;
73
+ const receiver = m[1];
74
+ const path = m[2];
75
+ if (!path || !receiver) continue;
76
+ const replacement = transformPointerToChain(path, receiver);
77
+ s.overwrite(start, end, replacement);
78
+ }
79
+ for (const m of code.matchAll(importRegex)) {
80
+ const start = m.index;
81
+ const end = start + m[0].length;
82
+ s.remove(start, end);
83
+ }
84
+ if (!s.hasChanged()) return null;
85
+ return {
86
+ code: s.toString(),
87
+ map: s.generateMap({
88
+ source: id,
89
+ includeContent: true,
90
+ hires: true
91
+ })
92
+ };
93
+ }
94
+ };
95
+ };
96
+ const unplugin = /* @__PURE__ */ createUnplugin(unpluginFactory);
97
+ const vitePlugin = unplugin.vite;
98
+ const rollupPlugin = unplugin.rollup;
99
+ const rolldownPlugin = unplugin.rolldown;
100
+ const webpackPlugin = unplugin.webpack;
101
+ const rspackPlugin = unplugin.rspack;
102
+ const esbuildPlugin = unplugin.esbuild;
103
+ const farmPlugin = unplugin.farm;
104
+ const bunPlugin = unplugin.bun;
105
+ //#endregion
106
+ export { rollupPlugin as a, unpluginFactory as c, rolldownPlugin as i, vitePlugin as l, esbuildPlugin as n, rspackPlugin as o, farmPlugin as r, unplugin as s, bunPlugin as t, webpackPlugin as u };
107
+
108
+ //# sourceMappingURL=src-DRw3NwHu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src-DRw3NwHu.mjs","names":[],"sources":["../../shared/src/constants.ts","../../shared/src/decode.ts","../src/transformer.ts","../src/index.ts"],"sourcesContent":["/**\r\n * 匹配严格的非负整数(不含前导零,除了 0 本身)\r\n */\r\nexport const RE_STRICT_UINT = /^(?:0|[1-9]\\d*)$/;\r\n\r\n/**\r\n * 危险键名集合,用于防止原型污染攻击\r\n */\r\nexport const INVALID_KEYS = new Set(['__proto__', 'constructor', 'prototype']);\r\n\r\n/**\r\n * JSON Pointer 转义符正则表达式\r\n */\r\nexport const RE_ESC_1 = /~1/g;\r\nexport const RE_ESC_0 = /~0/g;\r\n","import { RE_ESC_1, RE_ESC_0 } from './constants';\r\n\r\n/**\r\n * 解码 JSON Pointer 的单个键名\r\n * 将 ~1 还原为 /,将 ~0 还原为 ~\r\n *\r\n * @param key - 编码后的键名\r\n * @returns 解码后的键名\r\n */\r\nexport function decodePointerKey(key: string): string {\r\n return key.replace(RE_ESC_1, '/').replace(RE_ESC_0, '~');\r\n}\r\n","import { RE_STRICT_UINT, INVALID_KEYS, decodePointerKey } from '../../shared';\r\n\r\nexport function transformPointerToChain(path: string, receiver: string): string {\r\n // 根路径处理\r\n if (path === '' || path === '/') return receiver;\r\n\r\n // 校验\r\n if (path[0] !== '/') return receiver; // 非法路径不转换,交给运行时报错\r\n\r\n // 切分逻辑\r\n const segments = path.split('/').slice(1);\r\n if (segments.length > 1 && segments[segments.length - 1] === '') {\r\n segments.pop();\r\n }\r\n\r\n let chain = receiver;\r\n\r\n for (const rawKey of segments) {\r\n // 解码\r\n const key = decodePointerKey(rawKey);\r\n\r\n // 静态路径如果包含非法键,直接在编译期阻断\r\n if (INVALID_KEYS.has(key)) {\r\n throw new Error(\r\n `[fast-json-ptr] Security Risk: Forbidden key \"${key}\" found in static path \"${path}\"`,\r\n );\r\n }\r\n\r\n // 生成可选链片段\r\n const isUint = RE_STRICT_UINT.test(key);\r\n const accessor = isUint ? `[${key}]` : `[${JSON.stringify(key)}]`;\r\n\r\n chain += `?.${accessor}`;\r\n }\r\n\r\n return chain;\r\n}\r\n","import MagicString from 'magic-string';\r\nimport { type UnpluginFactory, createUnplugin } from 'unplugin';\r\n\r\nimport { transformPointerToChain } from './transformer';\r\n\r\nconst seekRegex =\r\n /(?:_?unref\\s*\\(\\s*(?:\\$setup\\.|_ctx\\.)?seek\\s*\\)|(?:\\$setup\\.|_ctx\\.)?seek)\\s*\\(\\s*([^,]+)\\s*,\\s*['\"]([^'\"]*)['\"]\\s*\\)/g;\r\nconst importRegex = /^\\s*import\\s+[^'\"]*['\"]fast-json-ptr['\"]\\s*;?\\s*$/gm;\r\n\r\nexport const unpluginFactory: UnpluginFactory<{} | undefined> = () => {\r\n return {\r\n name: 'fast-json-ptr',\r\n enforce: 'post',\r\n transformInclude(id) {\r\n if (id.includes('node_modules')) return false;\r\n\r\n if (id.includes('.vue')) return true;\r\n\r\n const [filepath] = id.split('?');\r\n\r\n if (!filepath) return false;\r\n\r\n return /\\.[jt]sx?$/.test(filepath);\r\n },\r\n transform(code, id) {\r\n if (!code.includes('seek') && !code.includes('fast-json-ptr')) return null;\r\n\r\n const s = new MagicString(code);\r\n\r\n // transform seek\r\n const matches = [...code.matchAll(seekRegex)];\r\n\r\n for (let i = matches.length - 1; i >= 0; i--) {\r\n const m = matches[i];\r\n\r\n if (!m) continue;\r\n\r\n const start = m.index!;\r\n const end = start + m[0].length;\r\n\r\n const receiver = m[1];\r\n const path = m[2];\r\n\r\n if (!path || !receiver) continue;\r\n\r\n const replacement = transformPointerToChain(path, receiver);\r\n\r\n s.overwrite(start, end, replacement);\r\n }\r\n\r\n // remove import\r\n for (const m of code.matchAll(importRegex)) {\r\n const start = m.index!;\r\n const end = start + m[0].length;\r\n s.remove(start, end);\r\n }\r\n\r\n if (!s.hasChanged()) return null;\r\n\r\n return {\r\n code: s.toString(),\r\n map: s.generateMap({\r\n source: id,\r\n includeContent: true,\r\n hires: true,\r\n }),\r\n };\r\n },\r\n };\r\n};\r\n\r\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory);\r\n\r\nexport default unplugin;\r\n\r\nexport const vitePlugin = unplugin.vite;\r\nexport const rollupPlugin = unplugin.rollup;\r\nexport const rolldownPlugin = unplugin.rolldown;\r\nexport const webpackPlugin = unplugin.webpack;\r\nexport const rspackPlugin = unplugin.rspack;\r\nexport const esbuildPlugin = unplugin.esbuild;\r\nexport const farmPlugin = unplugin.farm;\r\nexport const bunPlugin = unplugin.bun;\r\n"],"mappings":";;;;;;AAGA,MAAa,iBAAiB;;;;AAK9B,MAAa,eAAe,IAAI,IAAI;CAAC;CAAa;CAAe;CAAY,CAAC;;;;AAK9E,MAAa,WAAW;AACxB,MAAa,WAAW;;;;;;;;;;ACLxB,SAAgB,iBAAiB,KAAqB;AACpD,QAAO,IAAI,QAAQ,UAAU,IAAI,CAAC,QAAQ,UAAU,IAAI;;;;ACR1D,SAAgB,wBAAwB,MAAc,UAA0B;AAE9E,KAAI,SAAS,MAAM,SAAS,IAAK,QAAO;AAGxC,KAAI,KAAK,OAAO,IAAK,QAAO;CAG5B,MAAM,WAAW,KAAK,MAAM,IAAI,CAAC,MAAM,EAAE;AACzC,KAAI,SAAS,SAAS,KAAK,SAAS,SAAS,SAAS,OAAO,GAC3D,UAAS,KAAK;CAGhB,IAAI,QAAQ;AAEZ,MAAK,MAAM,UAAU,UAAU;EAE7B,MAAM,MAAM,iBAAiB,OAAO;AAGpC,MAAI,aAAa,IAAI,IAAI,CACvB,OAAM,IAAI,MACR,iDAAiD,IAAI,0BAA0B,KAAK,GACrF;EAKH,MAAM,WADS,eAAe,KAAK,IAAI,GACb,IAAI,IAAI,KAAK,IAAI,KAAK,UAAU,IAAI,CAAC;AAE/D,WAAS,KAAK;;AAGhB,QAAO;;;;AC9BT,MAAM,YACJ;AACF,MAAM,cAAc;AAEpB,MAAa,wBAAyD;AACpE,QAAO;EACL,MAAM;EACN,SAAS;EACT,iBAAiB,IAAI;AACnB,OAAI,GAAG,SAAS,eAAe,CAAE,QAAO;AAExC,OAAI,GAAG,SAAS,OAAO,CAAE,QAAO;GAEhC,MAAM,CAAC,YAAY,GAAG,MAAM,IAAI;AAEhC,OAAI,CAAC,SAAU,QAAO;AAEtB,UAAO,aAAa,KAAK,SAAS;;EAEpC,UAAU,MAAM,IAAI;AAClB,OAAI,CAAC,KAAK,SAAS,OAAO,IAAI,CAAC,KAAK,SAAS,gBAAgB,CAAE,QAAO;GAEtE,MAAM,IAAI,IAAI,YAAY,KAAK;GAG/B,MAAM,UAAU,CAAC,GAAG,KAAK,SAAS,UAAU,CAAC;AAE7C,QAAK,IAAI,IAAI,QAAQ,SAAS,GAAG,KAAK,GAAG,KAAK;IAC5C,MAAM,IAAI,QAAQ;AAElB,QAAI,CAAC,EAAG;IAER,MAAM,QAAQ,EAAE;IAChB,MAAM,MAAM,QAAQ,EAAE,GAAG;IAEzB,MAAM,WAAW,EAAE;IACnB,MAAM,OAAO,EAAE;AAEf,QAAI,CAAC,QAAQ,CAAC,SAAU;IAExB,MAAM,cAAc,wBAAwB,MAAM,SAAS;AAE3D,MAAE,UAAU,OAAO,KAAK,YAAY;;AAItC,QAAK,MAAM,KAAK,KAAK,SAAS,YAAY,EAAE;IAC1C,MAAM,QAAQ,EAAE;IAChB,MAAM,MAAM,QAAQ,EAAE,GAAG;AACzB,MAAE,OAAO,OAAO,IAAI;;AAGtB,OAAI,CAAC,EAAE,YAAY,CAAE,QAAO;AAE5B,UAAO;IACL,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,YAAY;KACjB,QAAQ;KACR,gBAAgB;KAChB,OAAO;KACR,CAAC;IACH;;EAEJ;;AAGH,MAAa,WAA2B,+BAAe,gBAAgB;AAIvE,MAAa,aAAa,SAAS;AACnC,MAAa,eAAe,SAAS;AACrC,MAAa,iBAAiB,SAAS;AACvC,MAAa,gBAAgB,SAAS;AACtC,MAAa,eAAe,SAAS;AACrC,MAAa,gBAAgB,SAAS;AACtC,MAAa,aAAa,SAAS;AACnC,MAAa,YAAY,SAAS"}
@@ -0,0 +1,27 @@
1
+ //#region ../shared/src/types.d.ts
2
+ type JsonPrimitive = string | number | boolean | null;
3
+ type JsonValue = JsonPrimitive | {
4
+ [key: string]: JsonValue;
5
+ } | JsonValue[];
6
+ /**
7
+ * 递归还原 JSON Pointer 转义
8
+ */
9
+ type DecodePointer<S extends string> = S extends `${infer T}~1${infer U}` ? `${T}/${DecodePointer<U>}` : S extends `${infer T}~0${infer U}` ? `${T}~${DecodePointer<U>}` : S;
10
+ /**
11
+ * 严格数字检查 (RE_STRICT_UINT)
12
+ */
13
+ type IsStrictUint<S extends string> = S extends '0' ? true : S extends `${infer F}${infer R}` ? F extends '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' ? R extends '' ? true : R extends `${number}` ? R extends `${string}.${string}` ? false : true : false : false : false;
14
+ /**
15
+ * 访问处理:对齐运行时逻辑
16
+ */
17
+ type PathToType<T, K extends string> = T extends any ? DecodePointer<K> extends keyof T ? T[DecodePointer<K>] : K extends `${infer _N extends number}` ? IsStrictUint<K> extends true ? _N extends keyof T ? T[_N] : undefined : undefined : undefined : never;
18
+ /**
19
+ * 递归解析 JSON Pointer
20
+ */
21
+ type GetByPointer<T, P extends string> = P extends '' | '/' ? T : P extends `/${infer Head}/${infer Tail}` ? Tail extends '' ? PathToType<T, Head> : GetByPointer<PathToType<T, Head>, `/${Tail}`> : P extends `/${infer Last}` ? PathToType<T, Last> : T;
22
+ //#endregion
23
+ //#region src/types.d.ts
24
+ declare global {
25
+ function seek<T extends JsonValue, P extends string>(obj: T, path: P): GetByPointer<T, P>;
26
+ } //# sourceMappingURL=types.d.ts.map
27
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../shared/src/types.ts","../src/types.ts"],"mappings":";KAAK,aAAA;AAAA,KACO,SAAA,GAAY,aAAA;EAAA,CAAmB,GAAA,WAAc,SAAA;AAAA,IAAc,SAAA;;;AAAvE;KAKK,aAAA,qBAAkC,CAAA,uCAChC,CAAA,IAAK,aAAA,CAAc,CAAA,MACtB,CAAA,uCACK,CAAA,IAAK,aAAA,CAAc,CAAA,MACtB,CAAA;;;;KAKD,YAAA,qBAAiC,CAAA,sBAElC,CAAA,kCACE,CAAA,+DACE,CAAA,qBAEE,CAAA,uBACE,CAAA;;;;KAUP,UAAA,wBAAkC,CAAA,eACnC,aAAA,CAAc,CAAA,gBAAiB,CAAA,GAC7B,CAAA,CAAE,aAAA,CAAc,CAAA,KAChB,CAAA,wCACE,YAAA,CAAa,CAAA,iBACX,EAAA,eAAiB,CAAA,GACf,CAAA,CAAE,EAAA;;;;KASF,YAAA,wBAAoC,CAAA,oBAC5C,CAAA,GACA,CAAA,0CACE,IAAA,cACE,UAAA,CAAW,CAAA,EAAG,IAAA,IACd,YAAA,CAAa,UAAA,CAAW,CAAA,EAAG,IAAA,OAAW,IAAA,MACxC,CAAA,4BACE,UAAA,CAAW,CAAA,EAAG,IAAA,IACd,CAAA;;;QCnDA,MAAA;EAAA,SACG,IAAA,WAAe,SAAA,mBAAA,CAA6B,GAAA,EAAK,CAAA,EAAG,IAAA,EAAM,CAAA,GAAI,YAAA,CAAa,CAAA,EAAG,CAAA;AAAA"}
package/dist/types.mjs ADDED
File without changes
@@ -0,0 +1,2 @@
1
+ import { vitePlugin } from "./index.mjs";
2
+ export { vitePlugin as default };
package/dist/vite.mjs ADDED
@@ -0,0 +1,7 @@
1
+ import { l as vitePlugin } from "./src-DRw3NwHu.mjs";
2
+ //#region src/vite.ts
3
+ var vite_default = vitePlugin;
4
+ //#endregion
5
+ export { vite_default as default };
6
+
7
+ //# sourceMappingURL=vite.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.mjs","names":[],"sources":["../src/vite.ts"],"sourcesContent":["import { vitePlugin } from '.';\r\n\r\nexport default vitePlugin;\r\n"],"mappings":";;AAEA,IAAA,eAAe"}
@@ -0,0 +1,2 @@
1
+ import { webpackPlugin } from "./index.mjs";
2
+ export { webpackPlugin as default };
@@ -0,0 +1,7 @@
1
+ import { u as webpackPlugin } from "./src-DRw3NwHu.mjs";
2
+ //#region src/webpack.ts
3
+ var webpack_default = webpackPlugin;
4
+ //#endregion
5
+ export { webpack_default as default };
6
+
7
+ //# sourceMappingURL=webpack.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webpack.mjs","names":[],"sources":["../src/webpack.ts"],"sourcesContent":["\r\nimport { webpackPlugin } from '.';\r\n\r\nexport default webpackPlugin;\r\n"],"mappings":";;AAGA,IAAA,kBAAe"}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@byc/json-ptr-compiler",
3
+ "version": "0.0.1",
4
+ "description": "",
5
+ "keywords": [],
6
+ "author": "",
7
+ "license": "ISC",
8
+ "devDependencies": {
9
+ "@vue/runtime-core": "^3.5.30",
10
+ "tsdown": "^0.21.4",
11
+ "vitest": "^4.1.0"
12
+ },
13
+ "dependencies": {
14
+ "magic-string": "^0.30.21",
15
+ "unplugin": "^3.0.0"
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "./src/types.ts",
20
+ "package.json"
21
+ ],
22
+ "exports": {
23
+ ".": "./dist/index.mjs",
24
+ "./bun": "./dist/bun.mjs",
25
+ "./esbuild": "./dist/esbuild.mjs",
26
+ "./farm": "./dist/farm.mjs",
27
+ "./rolldown": "./dist/rolldown.mjs",
28
+ "./rollup": "./dist/rollup.mjs",
29
+ "./rspack": "./dist/rspack.mjs",
30
+ "./types": "./dist/types.mjs",
31
+ "./vite": "./dist/vite.mjs",
32
+ "./webpack": "./dist/webpack.mjs",
33
+ "./package.json": "./package.json"
34
+ },
35
+ "scripts": {
36
+ "test": "vitest",
37
+ "build": "tsdown"
38
+ }
39
+ }
package/src/types.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { GetByPointer, JsonValue } from '../../shared';
2
+
3
+ export type {};
4
+
5
+ declare global {
6
+ function seek<T extends JsonValue, P extends string>(obj: T, path: P): GetByPointer<T, P>;
7
+ }