@party-stack/foundry-ontology 0.8.0 → 0.8.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.
@@ -1 +1 @@
1
- {"version":3,"file":"convertLoadSubsetOptions.d.ts","sourceRoot":"","sources":["../../src/adapter/convertLoadSubsetOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,iBAAiB,EACjB,eAAe,EAElB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAa,iBAAiB,EAAgD,MAAM,cAAc,CAAC;AAiD1G,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAElF;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,iBAAiB,GAAG,SAAS,CA8FzG;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,eAAe,GAAG,SAAS,CAS3G"}
1
+ {"version":3,"file":"convertLoadSubsetOptions.d.ts","sourceRoot":"","sources":["../../src/adapter/convertLoadSubsetOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,iBAAiB,EACjB,eAAe,EAElB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAa,iBAAiB,EAAgD,MAAM,cAAc,CAAC;AAsI1G,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GAAG,OAAO,CAElF;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,iBAAiB,GAAG,SAAS,CAwGzG;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,eAAe,GAAG,SAAS,CAS3G"}
@@ -2,14 +2,85 @@ import { parseOrderByExpression, parseWhereExpression } from "@tanstack/db";
2
2
  import { Temporal } from "temporal-polyfill";
3
3
  const ALWAYS_FALSE_FILTER = { type: "or", value: [] };
4
4
  const ALWAYS_TRUE_FILTER = { type: "and", value: [] };
5
- function convertLikePattern(value) {
6
- return value
7
- .toLowerCase()
8
- .replaceAll("_", "?")
9
- .replaceAll("%", "*");
5
+ function pushdown(query, safeToNegate = true) {
6
+ return { query, safeToNegate };
10
7
  }
11
- function isMatchAllLikePattern(value) {
12
- return value.length > 0 && /^%+$/.test(value);
8
+ function parseLikePattern(pattern) {
9
+ const parts = [];
10
+ let literal = "";
11
+ const flushLiteral = () => {
12
+ if (literal) {
13
+ parts.push({ type: "literal", value: literal });
14
+ literal = "";
15
+ }
16
+ };
17
+ for (let index = 0; index < pattern.length; index++) {
18
+ const character = pattern[index];
19
+ if (character === "\\") {
20
+ const escaped = pattern[index + 1];
21
+ if (escaped === "%" || escaped === "_" || escaped === "\\") {
22
+ literal += escaped;
23
+ index++;
24
+ }
25
+ else {
26
+ literal += character;
27
+ }
28
+ }
29
+ else if (character === "%") {
30
+ flushLiteral();
31
+ parts.push({ type: "many" });
32
+ }
33
+ else if (character === "_") {
34
+ flushLiteral();
35
+ parts.push({ type: "single" });
36
+ }
37
+ else {
38
+ literal += character;
39
+ }
40
+ }
41
+ flushLiteral();
42
+ return parts;
43
+ }
44
+ function escapeFoundryWildcardLiteral(value) {
45
+ return value.replace(/[\\*?]/g, "\\$&");
46
+ }
47
+ function convertLikeFilter(field, value) {
48
+ const parts = parseLikePattern(value.toLowerCase());
49
+ const hasLeadingWildcard = parts[0]?.type === "many";
50
+ const hasTrailingWildcard = parts.at(-1)?.type === "many";
51
+ const propertyIdentifier = fieldPathToPropertyIdentifier(field);
52
+ if (hasLeadingWildcard && hasTrailingWildcard) {
53
+ const terms = parts.flatMap((part) => (part.type === "literal" && part.value ? [part.value] : []));
54
+ const queries = terms.map((term) => ({
55
+ // This is Foundry's substring/phrase query. It can over-fetch because
56
+ // wildcard-delimited terms are not required to be adjacent or ordered.
57
+ type: "containsAllTermsInOrder",
58
+ propertyIdentifier,
59
+ value: term,
60
+ }));
61
+ const query = queries.length === 0
62
+ ? ALWAYS_TRUE_FILTER
63
+ : queries.length === 1
64
+ ? queries[0]
65
+ : { type: "and", value: queries };
66
+ // Contains is an approximation of SQL LIKE. Negating this superset
67
+ // would produce a subset and could hide exact matches.
68
+ return pushdown(query, false);
69
+ }
70
+ const wildcard = parts
71
+ .map((part) => {
72
+ if (part.type === "many")
73
+ return "*";
74
+ if (part.type === "single")
75
+ return "?";
76
+ return escapeFoundryWildcardLiteral(part.value);
77
+ })
78
+ .join("");
79
+ return pushdown({
80
+ type: "wildcard",
81
+ propertyIdentifier,
82
+ value: wildcard,
83
+ });
13
84
  }
14
85
  function convertQueryValue(value) {
15
86
  if (value instanceof Date) {
@@ -44,10 +115,12 @@ export function isAlwaysFalseFilter(filter) {
44
115
  export function convertLoadSubsetFilter(filter) {
45
116
  return (parseWhereExpression(filter, {
46
117
  handlers: {
47
- and: (...filters) => ({ type: "and", value: filters }),
48
- or: (...filters) => ({ type: "or", value: filters }),
49
- not: (filter) => ({ type: "not", value: filter }),
50
- eq: (field, value) => value == null
118
+ and: (...filters) => pushdown({ type: "and", value: filters.map(({ query }) => query) }, filters.every(({ safeToNegate }) => safeToNegate)),
119
+ or: (...filters) => pushdown({ type: "or", value: filters.map(({ query }) => query) }, filters.every(({ safeToNegate }) => safeToNegate)),
120
+ not: (filter) => filter.safeToNegate
121
+ ? pushdown({ type: "not", value: filter.query })
122
+ : pushdown(ALWAYS_TRUE_FILTER, false),
123
+ eq: (field, value) => pushdown(value == null
51
124
  ? {
52
125
  type: "isNull",
53
126
  propertyIdentifier: fieldPathToPropertyIdentifier(field),
@@ -57,41 +130,44 @@ export function convertLoadSubsetFilter(filter) {
57
130
  type: "eq",
58
131
  propertyIdentifier: fieldPathToPropertyIdentifier(field),
59
132
  value: convertQueryValue(value),
60
- },
61
- gt: (field, value) => value == null
133
+ }),
134
+ gt: (field, value) => pushdown(value == null
62
135
  ? ALWAYS_FALSE_FILTER
63
136
  : {
64
137
  type: "gt",
65
138
  propertyIdentifier: fieldPathToPropertyIdentifier(field),
66
139
  value: convertQueryValue(value),
67
- },
68
- gte: (field, value) => value == null
140
+ }),
141
+ gte: (field, value) => pushdown(value == null
69
142
  ? ALWAYS_FALSE_FILTER
70
143
  : {
71
144
  type: "gte",
72
145
  propertyIdentifier: fieldPathToPropertyIdentifier(field),
73
146
  value: convertQueryValue(value),
74
- },
75
- lt: (field, value) => value == null
147
+ }),
148
+ lt: (field, value) => pushdown(value == null
76
149
  ? ALWAYS_FALSE_FILTER
77
150
  : {
78
151
  type: "lt",
79
152
  propertyIdentifier: fieldPathToPropertyIdentifier(field),
80
153
  value: convertQueryValue(value),
81
- },
82
- lte: (field, value) => value == null
154
+ }),
155
+ lte: (field, value) => pushdown(value == null
83
156
  ? ALWAYS_FALSE_FILTER
84
157
  : {
85
158
  type: "lte",
86
159
  propertyIdentifier: fieldPathToPropertyIdentifier(field),
87
160
  value: convertQueryValue(value),
88
- },
161
+ }),
89
162
  isNull: (field) => ({
90
- type: "isNull",
91
- propertyIdentifier: fieldPathToPropertyIdentifier(field),
92
- value: true,
163
+ query: {
164
+ type: "isNull",
165
+ propertyIdentifier: fieldPathToPropertyIdentifier(field),
166
+ value: true,
167
+ },
168
+ safeToNegate: true,
93
169
  }),
94
- in: (field, value) => ({
170
+ in: (field, value) => pushdown({
95
171
  type: "in",
96
172
  propertyIdentifier: fieldPathToPropertyIdentifier(field),
97
173
  value: value
@@ -99,26 +175,12 @@ export function convertLoadSubsetFilter(filter) {
99
175
  entry !== undefined)
100
176
  .map(convertQueryValue),
101
177
  }),
102
- ilike: (field, value) => !isMatchAllLikePattern(value)
103
- ? {
104
- type: "wildcard",
105
- propertyIdentifier: fieldPathToPropertyIdentifier(field),
106
- // https://github.com/TanStack/db/blob/dab41aec8d8fa042384b4c0f878b3731c1d4a2b0/packages/db/src/query/compiler/evaluators.ts#L479-L481
107
- // https://www.palantir.com/docs/foundry/object-explorer/search-syntax#wildcards
108
- value: convertLikePattern(value),
109
- }
110
- : ALWAYS_TRUE_FILTER,
111
- like: (field, value) =>
112
- // We can copy the ilike logic -- this will return slightly more results but still better than querying everything.
113
- !isMatchAllLikePattern(value)
114
- ? {
115
- type: "wildcard",
116
- propertyIdentifier: fieldPathToPropertyIdentifier(field),
117
- value: convertLikePattern(value),
118
- }
119
- : ALWAYS_TRUE_FILTER,
178
+ ilike: convertLikeFilter,
179
+ // Foundry wildcard and contains searches are case-insensitive,
180
+ // so LIKE can over-fetch while TanStack applies exact casing.
181
+ like: convertLikeFilter,
120
182
  },
121
- }) ?? undefined);
183
+ })?.query ?? undefined);
122
184
  }
123
185
  export function convertLoadSubsetOrderBy(orderBy) {
124
186
  return orderBy
@@ -1 +1 @@
1
- {"version":3,"file":"convertLoadSubsetOptions.js","sourceRoot":"","sources":["../../src/adapter/convertLoadSubsetOptions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convertLoadSubsetOptions.js","sourceRoot":"","sources":["../../src/adapter/convertLoadSubsetOptions.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,46 @@
1
- import { eq, gt, ilike, IR, like, lt } from "@tanstack/db";
1
+ import { compileSingleRowExpression, eq, gt, ilike, IR, like, lt, not } from "@tanstack/db";
2
2
  import { Temporal } from "temporal-polyfill";
3
3
  import { describe, expect, it } from "vitest";
4
4
  import { convertLoadSubsetFilter, isAlwaysFalseFilter } from "./convertLoadSubsetOptions.js";
5
+ function evaluateFoundryTextPushdown(filter, row) {
6
+ if (filter.type === "and") {
7
+ return filter.value.every((child) => evaluateFoundryTextPushdown(child, row));
8
+ }
9
+ if (filter.type === "or") {
10
+ return filter.value.some((child) => evaluateFoundryTextPushdown(child, row));
11
+ }
12
+ if (filter.type === "not") {
13
+ return !evaluateFoundryTextPushdown(filter.value, row);
14
+ }
15
+ const propertyIdentifier = filter.propertyIdentifier;
16
+ if (propertyIdentifier?.type !== "property") {
17
+ throw new Error(`Unsupported test property identifier for ${filter.type}`);
18
+ }
19
+ const value = row[propertyIdentifier.apiName]?.toLowerCase() ?? "";
20
+ if (filter.type === "containsAllTermsInOrder") {
21
+ return value.includes(filter.value.toLowerCase());
22
+ }
23
+ if (filter.type === "wildcard") {
24
+ let regex = "";
25
+ for (let index = 0; index < filter.value.length; index++) {
26
+ const character = filter.value[index];
27
+ if (character === "\\" && index + 1 < filter.value.length) {
28
+ regex += filter.value[++index].replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
29
+ }
30
+ else if (character === "*") {
31
+ regex += ".*";
32
+ }
33
+ else if (character === "?") {
34
+ regex += ".";
35
+ }
36
+ else {
37
+ regex += character.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
38
+ }
39
+ }
40
+ return new RegExp(`^${regex}$`, "s").test(value);
41
+ }
42
+ throw new Error(`Unsupported Foundry test filter: ${filter.type}`);
43
+ }
5
44
  describe("convertLoadSubsetFilter", () => {
6
45
  it("converts null equality to an isNull filter", () => {
7
46
  const filter = convertLoadSubsetFilter(eq(new IR.PropRef(["completedAt"]), null));
@@ -24,15 +63,103 @@ describe("convertLoadSubsetFilter", () => {
24
63
  value: "2026-07-27T12:00:00Z",
25
64
  });
26
65
  });
27
- it.each([ilike, like])("converts every SQL wildcard in like patterns", (operator) => {
28
- const filter = convertLoadSubsetFilter(operator(new IR.PropRef(["title"]), "%ISSUE_one_two%"));
66
+ it("converts two-sided LIKE wildcards to a contains pushdown", () => {
67
+ expect(convertLoadSubsetFilter(like(new IR.PropRef(["name"]), "%foo%"))).toEqual({
68
+ type: "containsAllTermsInOrder",
69
+ propertyIdentifier: { type: "property", apiName: "name" },
70
+ value: "foo",
71
+ });
72
+ });
73
+ it("normalizes ILIKE contains terms for case-insensitive search", () => {
74
+ expect(convertLoadSubsetFilter(ilike(new IR.PropRef(["name"]), "%FoO%"))).toEqual({
75
+ type: "containsAllTermsInOrder",
76
+ propertyIdentifier: { type: "property", apiName: "name" },
77
+ value: "foo",
78
+ });
79
+ });
80
+ it("preserves supported one-sided wildcard pushdowns", () => {
81
+ expect(convertLoadSubsetFilter(like(new IR.PropRef(["name"]), "foo%"))).toMatchObject({ type: "wildcard", value: "foo*" });
82
+ expect(convertLoadSubsetFilter(like(new IR.PropRef(["name"]), "%foo"))).toMatchObject({ type: "wildcard", value: "*foo" });
83
+ });
84
+ it("distinguishes escaped LIKE characters from wildcards", () => {
85
+ expect(convertLoadSubsetFilter(like(new IR.PropRef(["name"]), "%50\\%%"))).toMatchObject({
86
+ type: "containsAllTermsInOrder",
87
+ value: "50%",
88
+ });
89
+ expect(convertLoadSubsetFilter(like(new IR.PropRef(["name"]), "%foo\\_%"))).toMatchObject({
90
+ type: "containsAllTermsInOrder",
91
+ value: "foo_",
92
+ });
93
+ expect(convertLoadSubsetFilter(like(new IR.PropRef(["name"]), "f_o%bar_baz"))).toMatchObject({
94
+ type: "wildcard",
95
+ value: "f?o*bar?baz",
96
+ });
97
+ expect(convertLoadSubsetFilter(like(new IR.PropRef(["name"]), "path\\\\name%"))).toMatchObject({
98
+ type: "wildcard",
99
+ value: "path\\\\name*",
100
+ });
101
+ });
102
+ it("uses contains pushdowns for each wildcard-delimited term", () => {
103
+ expect(convertLoadSubsetFilter(ilike(new IR.PropRef(["name"]), "%foo%BAR%baz%"))).toEqual({
104
+ type: "and",
105
+ value: [
106
+ {
107
+ type: "containsAllTermsInOrder",
108
+ propertyIdentifier: { type: "property", apiName: "name" },
109
+ value: "foo",
110
+ },
111
+ {
112
+ type: "containsAllTermsInOrder",
113
+ propertyIdentifier: { type: "property", apiName: "name" },
114
+ value: "bar",
115
+ },
116
+ {
117
+ type: "containsAllTermsInOrder",
118
+ propertyIdentifier: { type: "property", apiName: "name" },
119
+ value: "baz",
120
+ },
121
+ ],
122
+ });
123
+ });
124
+ it("does not negate an approximate contains pushdown", () => {
125
+ expect(convertLoadSubsetFilter(not(ilike(new IR.PropRef(["name"]), "%foo%")))).toEqual({ type: "and", value: [] });
126
+ });
127
+ it("always fetches a superset of exact TanStack LIKE matches", () => {
128
+ const rows = [
129
+ { name: "foo" },
130
+ { name: "FOO" },
131
+ { name: "prefix foo suffix" },
132
+ { name: "foobar" },
133
+ { name: "foo then bar" },
134
+ { name: "bar then foo" },
135
+ { name: "barfoo" },
136
+ { name: "unrelated" },
137
+ ];
138
+ const predicates = [
139
+ like(new IR.PropRef(["name"]), "%foo%"),
140
+ ilike(new IR.PropRef(["name"]), "%FoO%"),
141
+ like(new IR.PropRef(["name"]), "foo%"),
142
+ ilike(new IR.PropRef(["name"]), "%foo"),
143
+ like(new IR.PropRef(["name"]), "%foo%bar%"),
144
+ not(ilike(new IR.PropRef(["name"]), "%foo%")),
145
+ ];
146
+ for (const predicate of predicates) {
147
+ const pushdownFilter = convertLoadSubsetFilter(predicate);
148
+ const exactPredicate = compileSingleRowExpression(predicate);
149
+ const exactRows = rows.filter((row) => exactPredicate(row));
150
+ const fetchedRows = rows.filter((row) => evaluateFoundryTextPushdown(pushdownFilter, row));
151
+ expect(fetchedRows).toEqual(expect.arrayContaining(exactRows));
152
+ }
153
+ });
154
+ it.each([ilike, like])("converts every SQL wildcard in one-sided like patterns", (operator) => {
155
+ const filter = convertLoadSubsetFilter(operator(new IR.PropRef(["title"]), "ISSUE_one%two%"));
29
156
  expect(filter).toEqual({
30
157
  type: "wildcard",
31
158
  propertyIdentifier: {
32
159
  type: "property",
33
160
  apiName: "title",
34
161
  },
35
- value: "*issue?one?two*",
162
+ value: "issue?one*two*",
36
163
  });
37
164
  });
38
165
  it.each([ilike, like])("treats patterns containing only percent wildcards as unfiltered", (operator) => {
@@ -1 +1 @@
1
- {"version":3,"file":"convertLoadSubsetOptions.test.js","sourceRoot":"","sources":["../../src/adapter/convertLoadSubsetOptions.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAE7F,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAc,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAE/F,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,QAAQ;YACd,kBAAkB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE;YAChE,KAAK,EAAE,IAAI;SACd,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QACxD,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAc,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAE/F,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,uBAAuB,CAClC,EAAE,CACE,IAAI,EAAE,CAAC,OAAO,CAAmB;YAC7B,WAAW;SACd,CAAC,EACF,QAAQ,CAAC,OAAO,CAAC,IAAI,CACjB,sBAAsB,CACzB,CACJ,CACJ,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YACzB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,sBAAsB;SAChC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAClB,8CAA8C,EAC9C,CAAC,QAAQ,EAAE,EAAE;QACT,MAAM,MAAM,GAAG,uBAAuB,CAClC,QAAQ,CACJ,IAAI,EAAE,CAAC,OAAO,CAAS,CAAC,OAAO,CAAC,CAAC,EACjC,iBAAiB,CACpB,CACJ,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,UAAU;YAChB,kBAAkB,EAAE;gBAChB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,OAAO;aACnB;YACD,KAAK,EAAE,iBAAiB;SAC3B,CAAC,CAAC;IACP,CAAC,CACJ,CAAC;IAEF,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAClB,iEAAiE,EACjE,CAAC,QAAQ,EAAE,EAAE;QACT,MAAM,MAAM,GAAG,uBAAuB,CAClC,QAAQ,CACJ,IAAI,EAAE,CAAC,OAAO,CAAS,CAAC,OAAO,CAAC,CAAC,EACjC,IAAI,CACP,CACJ,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACnB,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,EAAE;SACZ,CAAC,CAAC;IACP,CAAC,CACJ,CAAC;AACN,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"convertLoadSubsetOptions.test.js","sourceRoot":"","sources":["../../src/adapter/convertLoadSubsetOptions.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@party-stack/foundry-ontology",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {