@osdk/api 2.8.0-beta.28 → 2.8.0-beta.29
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/CHANGELOG.md +6 -0
- package/build/browser/public/unstable.js +1 -1
- package/build/browser/public/unstable.js.map +1 -1
- package/build/browser/shapes/InlineShapeConfig.js.map +1 -1
- package/build/browser/shapes/ShapeBuilder.js +243 -0
- package/build/browser/shapes/ShapeBuilder.js.map +1 -0
- package/build/browser/shapes/configToShapeDefinition.js +115 -0
- package/build/browser/shapes/configToShapeDefinition.js.map +1 -0
- package/build/browser/shapes/index.js +8 -0
- package/build/browser/shapes/index.js.map +1 -1
- package/build/cjs/public/shapes-internal.d.cts +1 -1
- package/build/cjs/public/unstable.cjs +381 -0
- package/build/cjs/public/unstable.cjs.map +1 -1
- package/build/cjs/public/unstable.d.cts +22 -4
- package/build/cjs/{shapes-internal-DBznJX3f.d.cts → shapes-internal-DQ2ODZcP.d.cts} +1 -1
- package/build/esm/public/unstable.js +1 -1
- package/build/esm/public/unstable.js.map +1 -1
- package/build/esm/shapes/InlineShapeConfig.js.map +1 -1
- package/build/esm/shapes/ShapeBuilder.js +243 -0
- package/build/esm/shapes/ShapeBuilder.js.map +1 -0
- package/build/esm/shapes/configToShapeDefinition.js +115 -0
- package/build/esm/shapes/configToShapeDefinition.js.map +1 -0
- package/build/esm/shapes/index.js +8 -0
- package/build/esm/shapes/index.js.map +1 -1
- package/build/types/public/unstable.d.ts +1 -1
- package/build/types/public/unstable.d.ts.map +1 -1
- package/build/types/shapes/InlineShapeConfig.d.ts +1 -1
- package/build/types/shapes/InlineShapeConfig.d.ts.map +1 -1
- package/build/types/shapes/ShapeBuilder.d.ts +21 -0
- package/build/types/shapes/ShapeBuilder.d.ts.map +1 -0
- package/build/types/shapes/configToShapeDefinition.d.ts +6 -0
- package/build/types/shapes/configToShapeDefinition.d.ts.map +1 -0
- package/build/types/shapes/index.d.ts +2 -0
- package/build/types/shapes/index.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -19,5 +19,5 @@ export { __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid } from "../experimenta
|
|
|
19
19
|
export { __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid } from "../experimental/fetchPageByRid.js";
|
|
20
20
|
export { __EXPERIMENTAL__NOT_SUPPORTED_YET__getBulkLinks } from "../experimental/getBulkLinks.js";
|
|
21
21
|
// Shapes (unstable — will graduate to @osdk/api/shapes when stable)
|
|
22
|
-
export { isSourcePkSymbol, ShapeNullabilityError, SourcePrimaryKeySymbol } from "../shapes/index.js";
|
|
22
|
+
export { configToShapeDefinition, createShapeBuilder, isSourcePkSymbol, ShapeNullabilityError, SourcePrimaryKeySymbol } from "../shapes/index.js";
|
|
23
23
|
//# sourceMappingURL=unstable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unstable.js","names":["__EXPERIMENTAL__NOT_SUPPORTED_YET__createMediaReference","__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid","__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid","__EXPERIMENTAL__NOT_SUPPORTED_YET__getBulkLinks","isSourcePkSymbol","ShapeNullabilityError","SourcePrimaryKeySymbol"],"sources":["unstable.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport type { Experiment, ExperimentFns } from \"../experimental/Experiment.js\";\n\nexport { __EXPERIMENTAL__NOT_SUPPORTED_YET__createMediaReference } from \"../experimental/createMediaReference.js\";\nexport { __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid } from \"../experimental/fetchOneByRid.js\";\nexport {\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid,\n type FetchPageByRidPayload,\n} from \"../experimental/fetchPageByRid.js\";\nexport { __EXPERIMENTAL__NOT_SUPPORTED_YET__getBulkLinks } from \"../experimental/getBulkLinks.js\";\n\nexport type { EXPERIMENTAL_BulkLinkResult } from \"../objectSet/BulkLinkResult.js\";\nexport type { MinimalObjectSet } from \"../objectSet/ObjectSet.js\";\n\n// Shapes (unstable — will graduate to @osdk/api/shapes when stable)\nexport {\n isSourcePkSymbol,\n ShapeNullabilityError,\n SourcePrimaryKeySymbol,\n} from \"../shapes/index.js\";\n\nexport type {\n InferShapeDefinition,\n InlineLinkConfig,\n InlineShapeConfig,\n LinkLoadConfig,\n LinkStatus,\n NullabilityViolation,\n PropertyType,\n RequiredProperty,\n ShapeBaseType,\n ShapeBuilder,\n ShapeDefinition,\n ShapeDerivedLinks,\n ShapeInstance,\n ShapeLinkBuilder,\n ShapeLinkResult,\n} from \"../shapes/index.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SAASA,uDAAuD,QAAQ,yCAAyC;AACjH,SAASC,gDAAgD,QAAQ,kCAAkC;AACnG,SACEC,iDAAiD,QAE5C,mCAAmC;AAC1C,SAASC,+CAA+C,QAAQ,iCAAiC;AAKjG;AACA,SACEC,gBAAgB,EAChBC,qBAAqB,EACrBC,sBAAsB,QACjB,oBAAoB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"unstable.js","names":["__EXPERIMENTAL__NOT_SUPPORTED_YET__createMediaReference","__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid","__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid","__EXPERIMENTAL__NOT_SUPPORTED_YET__getBulkLinks","configToShapeDefinition","createShapeBuilder","isSourcePkSymbol","ShapeNullabilityError","SourcePrimaryKeySymbol"],"sources":["unstable.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport type { Experiment, ExperimentFns } from \"../experimental/Experiment.js\";\n\nexport { __EXPERIMENTAL__NOT_SUPPORTED_YET__createMediaReference } from \"../experimental/createMediaReference.js\";\nexport { __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid } from \"../experimental/fetchOneByRid.js\";\nexport {\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid,\n type FetchPageByRidPayload,\n} from \"../experimental/fetchPageByRid.js\";\nexport { __EXPERIMENTAL__NOT_SUPPORTED_YET__getBulkLinks } from \"../experimental/getBulkLinks.js\";\n\nexport type { EXPERIMENTAL_BulkLinkResult } from \"../objectSet/BulkLinkResult.js\";\nexport type { MinimalObjectSet } from \"../objectSet/ObjectSet.js\";\n\n// Shapes (unstable — will graduate to @osdk/api/shapes when stable)\nexport {\n configToShapeDefinition,\n createShapeBuilder,\n isSourcePkSymbol,\n ShapeNullabilityError,\n SourcePrimaryKeySymbol,\n} from \"../shapes/index.js\";\n\nexport type {\n InferShapeDefinition,\n InlineLinkConfig,\n InlineShapeConfig,\n LinkLoadConfig,\n LinkStatus,\n NullabilityViolation,\n PropertyType,\n RequiredProperty,\n ShapeBaseType,\n ShapeBuilder,\n ShapeDefinition,\n ShapeDerivedLinks,\n ShapeInstance,\n ShapeLinkBuilder,\n ShapeLinkResult,\n} from \"../shapes/index.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,SAASA,uDAAuD,QAAQ,yCAAyC;AACjH,SAASC,gDAAgD,QAAQ,kCAAkC;AACnG,SACEC,iDAAiD,QAE5C,mCAAmC;AAC1C,SAASC,+CAA+C,QAAQ,iCAAiC;AAKjG;AACA,SACEC,uBAAuB,EACvBC,kBAAkB,EAClBC,gBAAgB,EAChBC,qBAAqB,EACrBC,sBAAsB,QACjB,oBAAoB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineShapeConfig.js","names":[],"sources":["InlineShapeConfig.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectOrInterfaceDefinition,\n PropertyKeys,\n} from \"../ontology/ObjectOrInterface.js\";\nimport type {\n PropertyType,\n RequiredProperty,\n ShapeDefinition,\n ShapeLinkBuilder,\n} from \"./ShapeDefinition.js\";\n\nexport interface InlineShapeConfig<\n BASE extends ObjectOrInterfaceDefinition,\n> {\n readonly require?: readonly PropertyKeys<BASE>[];\n readonly select?: readonly PropertyKeys<BASE>[];\n readonly dropIfNull?: readonly PropertyKeys<BASE>[];\n readonly defaults?: {\n readonly [K in PropertyKeys<BASE>]?: NonNullable<PropertyType<BASE, K>>;\n };\n readonly transforms?: {\n readonly [K in PropertyKeys<BASE>]?: (\n value: PropertyType<BASE, K>,\n ) => unknown;\n };\n readonly links?: Record<string, InlineLinkConfig<BASE>>;\n}\n\nexport interface InlineLinkConfig<\n SOURCE extends ObjectOrInterfaceDefinition,\n> {\n readonly via: (\n builder: ShapeLinkBuilder<SOURCE, SOURCE>,\n ) => ShapeLinkBuilder<SOURCE, ObjectOrInterfaceDefinition>;\n readonly target
|
|
1
|
+
{"version":3,"file":"InlineShapeConfig.js","names":[],"sources":["InlineShapeConfig.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectOrInterfaceDefinition,\n PropertyKeys,\n} from \"../ontology/ObjectOrInterface.js\";\nimport type {\n PropertyType,\n RequiredProperty,\n ShapeDefinition,\n ShapeLinkBuilder,\n} from \"./ShapeDefinition.js\";\n\nexport interface InlineShapeConfig<\n BASE extends ObjectOrInterfaceDefinition,\n> {\n readonly require?: readonly PropertyKeys<BASE>[];\n readonly select?: readonly PropertyKeys<BASE>[];\n readonly dropIfNull?: readonly PropertyKeys<BASE>[];\n readonly defaults?: {\n readonly [K in PropertyKeys<BASE>]?: NonNullable<PropertyType<BASE, K>>;\n };\n readonly transforms?: {\n readonly [K in PropertyKeys<BASE>]?: (\n value: PropertyType<BASE, K>,\n ) => unknown;\n };\n readonly links?: Record<string, InlineLinkConfig<BASE>>;\n}\n\nexport interface InlineLinkConfig<\n SOURCE extends ObjectOrInterfaceDefinition,\n> {\n readonly via: (\n builder: ShapeLinkBuilder<SOURCE, SOURCE>,\n ) => ShapeLinkBuilder<SOURCE, ObjectOrInterfaceDefinition>;\n readonly target: ShapeDefinition<ObjectOrInterfaceDefinition>;\n readonly defer?: boolean;\n}\n\n// --- Type-level inference helpers ---\n\ntype ArrayElement<T> = T extends readonly (infer E)[] ? E : never;\n\nexport type InferInlineProps<\n BASE extends ObjectOrInterfaceDefinition,\n C extends InlineShapeConfig<BASE>,\n> =\n & {\n [K in ArrayElement<C[\"require\"]> & PropertyKeys<BASE>]: RequiredProperty<\n PropertyType<BASE, K>\n >;\n }\n & {\n [K in ArrayElement<C[\"select\"]> & PropertyKeys<BASE>]: PropertyType<\n BASE,\n K\n >;\n }\n & {\n [K in ArrayElement<C[\"dropIfNull\"]> & PropertyKeys<BASE>]: RequiredProperty<\n PropertyType<BASE, K>\n >;\n }\n & {\n [K in keyof C[\"defaults\"] & PropertyKeys<BASE>]: NonNullable<\n PropertyType<BASE, K>\n >;\n }\n & {\n [K in keyof C[\"transforms\"] & PropertyKeys<BASE>]: C[\"transforms\"] extends\n Record<K, (v: PropertyType<BASE, K>) => infer R> ? R : never;\n };\n\nexport type InferInlineLinks<\n BASE extends ObjectOrInterfaceDefinition,\n C extends InlineShapeConfig<BASE>,\n> = C[\"links\"] extends Record<string, InlineLinkConfig<BASE>> ? {\n [K in keyof C[\"links\"] & string]: C[\"links\"][K][\"target\"] extends\n ShapeDefinition<ObjectOrInterfaceDefinition> ? C[\"links\"][K][\"target\"]\n : ShapeDefinition<ObjectOrInterfaceDefinition>;\n }\n : {};\n\nexport type InferShapeDefinition<\n BASE extends ObjectOrInterfaceDefinition,\n C extends InlineShapeConfig<BASE>,\n> = ShapeDefinition<\n BASE,\n InferInlineProps<BASE, C>,\n InferInlineLinks<BASE, C>\n>;\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { computeShapeId } from "./computeShapeId.js";
|
|
18
|
+
import { SourcePrimaryKeySymbol } from "./ShapeDefinition.js";
|
|
19
|
+
class ShapeBuilderImpl {
|
|
20
|
+
#state;
|
|
21
|
+
constructor(state) {
|
|
22
|
+
this.#state = state;
|
|
23
|
+
}
|
|
24
|
+
#addProps(props, type) {
|
|
25
|
+
const newProps = {
|
|
26
|
+
...this.#state.props
|
|
27
|
+
};
|
|
28
|
+
for (const prop of props) {
|
|
29
|
+
newProps[prop] = {
|
|
30
|
+
nullabilityOp: {
|
|
31
|
+
type
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return newProps;
|
|
36
|
+
}
|
|
37
|
+
select(...props) {
|
|
38
|
+
return new ShapeBuilderImpl({
|
|
39
|
+
...this.#state,
|
|
40
|
+
props: this.#addProps(props, "select")
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
require(...props) {
|
|
44
|
+
return new ShapeBuilderImpl({
|
|
45
|
+
...this.#state,
|
|
46
|
+
props: this.#addProps(props, "require")
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
dropIfNull(...props) {
|
|
50
|
+
return new ShapeBuilderImpl({
|
|
51
|
+
...this.#state,
|
|
52
|
+
props: this.#addProps(props, "dropIfNull")
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
withDefault(prop, defaultValue) {
|
|
56
|
+
return new ShapeBuilderImpl({
|
|
57
|
+
...this.#state,
|
|
58
|
+
props: {
|
|
59
|
+
...this.#state.props,
|
|
60
|
+
[prop]: {
|
|
61
|
+
nullabilityOp: {
|
|
62
|
+
type: "withDefault",
|
|
63
|
+
defaultValue
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
withTransform(prop, transform) {
|
|
70
|
+
return new ShapeBuilderImpl({
|
|
71
|
+
...this.#state,
|
|
72
|
+
props: {
|
|
73
|
+
...this.#state.props,
|
|
74
|
+
[prop]: {
|
|
75
|
+
nullabilityOp: {
|
|
76
|
+
type: "withTransform",
|
|
77
|
+
transform
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
deriveLink(name, builder) {
|
|
84
|
+
const linkBuilder = createShapeLinkBuilder(this.#state.baseTypeApiName);
|
|
85
|
+
const linkResult = builder(linkBuilder);
|
|
86
|
+
return new ShapeBuilderImpl({
|
|
87
|
+
...this.#state,
|
|
88
|
+
props: {
|
|
89
|
+
...this.#state.props
|
|
90
|
+
},
|
|
91
|
+
derivedLinks: [...this.#state.derivedLinks, {
|
|
92
|
+
name,
|
|
93
|
+
objectSetDef: linkResult.objectSetDef,
|
|
94
|
+
targetShape: linkResult.targetShape,
|
|
95
|
+
config: linkResult.config
|
|
96
|
+
}]
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
build() {
|
|
100
|
+
const shapeId = computeShapeId({
|
|
101
|
+
baseTypeApiName: this.#state.baseTypeApiName,
|
|
102
|
+
props: this.#state.props,
|
|
103
|
+
derivedLinks: this.#state.derivedLinks
|
|
104
|
+
});
|
|
105
|
+
return {
|
|
106
|
+
__shapeId: shapeId,
|
|
107
|
+
__debugName: this.#state.debugName,
|
|
108
|
+
__baseType: this.#state.baseType,
|
|
109
|
+
__baseTypeApiName: this.#state.baseTypeApiName,
|
|
110
|
+
__props: Object.freeze({
|
|
111
|
+
...this.#state.props
|
|
112
|
+
}),
|
|
113
|
+
__derivedLinks: Object.freeze([...this.#state.derivedLinks]),
|
|
114
|
+
__selectedPropsType: {},
|
|
115
|
+
__derivedLinksType: {}
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
class ShapeLinkBuilderImpl {
|
|
120
|
+
#state;
|
|
121
|
+
$primaryKey = SourcePrimaryKeySymbol;
|
|
122
|
+
constructor(state) {
|
|
123
|
+
this.#state = state;
|
|
124
|
+
}
|
|
125
|
+
pivotTo(link) {
|
|
126
|
+
const newSegments = [...this.#state.segments, {
|
|
127
|
+
type: "pivotTo",
|
|
128
|
+
linkName: link,
|
|
129
|
+
sourceType: this.#state.currentTypeApiName
|
|
130
|
+
// targetType is resolved at link execution time when link metadata is available
|
|
131
|
+
}];
|
|
132
|
+
return new ShapeLinkBuilderImpl({
|
|
133
|
+
...this.#state,
|
|
134
|
+
segments: newSegments,
|
|
135
|
+
// currentTypeApiName is a hint for debugging; actual type resolution happens at execution
|
|
136
|
+
currentTypeApiName: `${this.#state.currentTypeApiName}.${link}`
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/** Sets the where filter for this link. Calling multiple times replaces the previous clause (last-write-wins). */
|
|
141
|
+
where(clause) {
|
|
142
|
+
return new ShapeLinkBuilderImpl({
|
|
143
|
+
...this.#state,
|
|
144
|
+
where: clause
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
#setOp(type, others) {
|
|
148
|
+
return new ShapeLinkBuilderImpl({
|
|
149
|
+
...this.#state,
|
|
150
|
+
setOperations: [...this.#state.setOperations, ...others.map(other => ({
|
|
151
|
+
type,
|
|
152
|
+
other: other.toObjectSetDef()
|
|
153
|
+
}))]
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
union(...others) {
|
|
157
|
+
return this.#setOp("union", others);
|
|
158
|
+
}
|
|
159
|
+
intersect(...others) {
|
|
160
|
+
return this.#setOp("intersect", others);
|
|
161
|
+
}
|
|
162
|
+
subtract(...others) {
|
|
163
|
+
return this.#setOp("subtract", others);
|
|
164
|
+
}
|
|
165
|
+
orderBy(property, direction = "asc") {
|
|
166
|
+
return new ShapeLinkBuilderImpl({
|
|
167
|
+
...this.#state,
|
|
168
|
+
orderBy: [...this.#state.orderBy, {
|
|
169
|
+
property: property,
|
|
170
|
+
direction
|
|
171
|
+
}]
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
limit(n) {
|
|
175
|
+
if (!Number.isInteger(n) || n <= 0) {
|
|
176
|
+
throw new Error(`ShapeLinkBuilder.limit() requires a positive integer, got: ${n}`);
|
|
177
|
+
}
|
|
178
|
+
return new ShapeLinkBuilderImpl({
|
|
179
|
+
...this.#state,
|
|
180
|
+
limit: n
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
distinct() {
|
|
184
|
+
return new ShapeLinkBuilderImpl({
|
|
185
|
+
...this.#state,
|
|
186
|
+
distinct: true
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
as(shape, config = {}) {
|
|
190
|
+
// The brand is a compile-time only marker, at runtime it's just undefined
|
|
191
|
+
return {
|
|
192
|
+
targetShape: shape,
|
|
193
|
+
objectSetDef: this.toObjectSetDef(),
|
|
194
|
+
config
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
toObjectSetDef() {
|
|
198
|
+
return {
|
|
199
|
+
segments: Object.freeze([...this.#state.segments]),
|
|
200
|
+
where: this.#state.where,
|
|
201
|
+
orderBy: this.#state.orderBy.length > 0 ? Object.freeze([...this.#state.orderBy]) : undefined,
|
|
202
|
+
limit: this.#state.limit,
|
|
203
|
+
distinct: this.#state.distinct || undefined,
|
|
204
|
+
setOperations: this.#state.setOperations.length > 0 ? Object.freeze([...this.#state.setOperations]) : undefined
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
export function createShapeLinkBuilder(sourceTypeApiName) {
|
|
209
|
+
return new ShapeLinkBuilderImpl({
|
|
210
|
+
sourceTypeApiName,
|
|
211
|
+
currentTypeApiName: sourceTypeApiName,
|
|
212
|
+
segments: [],
|
|
213
|
+
orderBy: [],
|
|
214
|
+
distinct: false,
|
|
215
|
+
setOperations: []
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Creates a new ShapeBuilder for the given base type.
|
|
221
|
+
*
|
|
222
|
+
* @param baseType - The base ObjectTypeDefinition or InterfaceDefinition
|
|
223
|
+
* @param debugName - Optional name for debugging in DevTools
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* ```typescript
|
|
227
|
+
* const SlimPlayer = createShapeBuilder(Player, "SlimPlayer")
|
|
228
|
+
* .require("name", "age")
|
|
229
|
+
* .withDefault("position", "Unknown")
|
|
230
|
+
* .build();
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
233
|
+
export function createShapeBuilder(baseType, debugName) {
|
|
234
|
+
const state = {
|
|
235
|
+
baseType,
|
|
236
|
+
baseTypeApiName: baseType.apiName,
|
|
237
|
+
debugName,
|
|
238
|
+
props: {},
|
|
239
|
+
derivedLinks: []
|
|
240
|
+
};
|
|
241
|
+
return new ShapeBuilderImpl(state);
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=ShapeBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShapeBuilder.js","names":["computeShapeId","SourcePrimaryKeySymbol","ShapeBuilderImpl","state","constructor","addProps","#addProps","props","type","newProps","prop","nullabilityOp","select","require","dropIfNull","withDefault","defaultValue","withTransform","transform","deriveLink","name","builder","linkBuilder","createShapeLinkBuilder","baseTypeApiName","linkResult","derivedLinks","objectSetDef","targetShape","config","build","shapeId","__shapeId","__debugName","debugName","__baseType","baseType","__baseTypeApiName","__props","Object","freeze","__derivedLinks","__selectedPropsType","__derivedLinksType","ShapeLinkBuilderImpl","$primaryKey","pivotTo","link","newSegments","segments","linkName","sourceType","currentTypeApiName","where","clause","setOp","#setOp","others","setOperations","map","other","toObjectSetDef","union","intersect","subtract","orderBy","property","direction","limit","n","Number","isInteger","Error","distinct","as","shape","length","undefined","sourceTypeApiName","createShapeBuilder","apiName"],"sources":["ShapeBuilder.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { WhereClause } from \"../aggregate/WhereClause.js\";\nimport type {\n ObjectOrInterfaceDefinition,\n PropertyKeys,\n} from \"../ontology/ObjectOrInterface.js\";\nimport type { LinkedType, LinkNames } from \"../util/LinkUtils.js\";\nimport { computeShapeId } from \"./computeShapeId.js\";\nimport { SourcePrimaryKeySymbol } from \"./ShapeDefinition.js\";\nimport type {\n DerivedLinkConfig,\n NullabilityOp,\n PropertyType,\n RequiredProperty,\n ShapeBuilder,\n ShapeDefinition,\n ShapeDerivedLinkDef,\n ShapeLinkBuilder,\n ShapeLinkObjectSetDef,\n ShapeLinkOrderBy,\n ShapeLinkResult,\n ShapeLinkSegment,\n ShapeLinkSetOperation,\n ShapePropertyConfig,\n} from \"./ShapeDefinition.js\";\n\ninterface ShapeBuilderState {\n readonly baseType: ObjectOrInterfaceDefinition;\n readonly baseTypeApiName: string;\n readonly debugName: string | undefined;\n readonly props: Record<string, ShapePropertyConfig>;\n readonly derivedLinks: ShapeDerivedLinkDef[];\n}\n\nclass ShapeBuilderImpl<\n BASE extends ObjectOrInterfaceDefinition,\n PROPS extends Record<string, unknown>,\n LINKS extends Record<string, ShapeDefinition<ObjectOrInterfaceDefinition>>,\n> implements ShapeBuilder<BASE, PROPS, LINKS> {\n readonly #state: ShapeBuilderState;\n\n constructor(state: ShapeBuilderState) {\n this.#state = state;\n }\n\n #addProps(\n props: string[],\n type: \"select\" | \"require\" | \"dropIfNull\",\n ): Record<string, ShapePropertyConfig> {\n const newProps = { ...this.#state.props };\n for (const prop of props) {\n newProps[prop] = { nullabilityOp: { type } };\n }\n return newProps;\n }\n\n select<K extends Exclude<PropertyKeys<BASE>, keyof PROPS>>(\n ...props: K[]\n ): ShapeBuilder<BASE, PROPS & { [P in K]: PropertyType<BASE, P> }, LINKS> {\n return new ShapeBuilderImpl({\n ...this.#state,\n props: this.#addProps(props as string[], \"select\"),\n });\n }\n\n require<K extends Exclude<PropertyKeys<BASE>, keyof PROPS>>(\n ...props: K[]\n ): ShapeBuilder<\n BASE,\n PROPS & { [P in K]: RequiredProperty<PropertyType<BASE, P>> },\n LINKS\n > {\n return new ShapeBuilderImpl({\n ...this.#state,\n props: this.#addProps(props as string[], \"require\"),\n });\n }\n\n dropIfNull<K extends Exclude<PropertyKeys<BASE>, keyof PROPS>>(\n ...props: K[]\n ): ShapeBuilder<\n BASE,\n PROPS & { [P in K]: RequiredProperty<PropertyType<BASE, P>> },\n LINKS\n > {\n return new ShapeBuilderImpl({\n ...this.#state,\n props: this.#addProps(props as string[], \"dropIfNull\"),\n });\n }\n\n withDefault<\n K extends Exclude<PropertyKeys<BASE>, keyof PROPS>,\n V extends NonNullable<PropertyType<BASE, K>>,\n >(\n prop: K,\n defaultValue: V,\n ): ShapeBuilder<\n BASE,\n PROPS & { [P in K]: NonNullable<PropertyType<BASE, P>> },\n LINKS\n > {\n return new ShapeBuilderImpl({\n ...this.#state,\n props: {\n ...this.#state.props,\n [prop as string]: {\n nullabilityOp: { type: \"withDefault\", defaultValue } as NullabilityOp,\n },\n },\n });\n }\n\n withTransform<K extends Exclude<PropertyKeys<BASE>, keyof PROPS>, R>(\n prop: K,\n transform: (value: PropertyType<BASE, K>) => R,\n ): ShapeBuilder<BASE, PROPS & { [P in K]: R }, LINKS> {\n return new ShapeBuilderImpl({\n ...this.#state,\n props: {\n ...this.#state.props,\n [prop as string]: {\n nullabilityOp: { type: \"withTransform\", transform } as NullabilityOp,\n },\n },\n });\n }\n\n deriveLink<\n NAME extends string,\n TARGET_SHAPE extends ShapeDefinition<ObjectOrInterfaceDefinition>,\n >(\n name: NAME,\n builder: (\n linkBuilder: ShapeLinkBuilder<BASE, BASE>,\n ) => ShapeLinkResult<TARGET_SHAPE>,\n ): ShapeBuilder<BASE, PROPS, LINKS & { [K in NAME]: TARGET_SHAPE }> {\n const linkBuilder = createShapeLinkBuilder<BASE, BASE>(\n this.#state.baseTypeApiName,\n );\n const linkResult = builder(linkBuilder);\n return new ShapeBuilderImpl({\n ...this.#state,\n props: { ...this.#state.props },\n derivedLinks: [\n ...this.#state.derivedLinks,\n {\n name,\n objectSetDef: linkResult.objectSetDef,\n targetShape: linkResult.targetShape,\n config: linkResult.config,\n },\n ],\n });\n }\n\n build(): ShapeDefinition<BASE, PROPS, LINKS> {\n const shapeId = computeShapeId({\n baseTypeApiName: this.#state.baseTypeApiName,\n props: this.#state.props,\n derivedLinks: this.#state.derivedLinks,\n });\n\n return {\n __shapeId: shapeId,\n __debugName: this.#state.debugName,\n __baseType: this.#state.baseType as BASE,\n __baseTypeApiName: this.#state.baseTypeApiName,\n __props: Object.freeze({ ...this.#state.props }),\n __derivedLinks: Object.freeze([...this.#state.derivedLinks]),\n __selectedPropsType: {} as PROPS,\n __derivedLinksType: {} as LINKS,\n } as ShapeDefinition<BASE, PROPS, LINKS>;\n }\n}\n\ninterface ShapeLinkBuilderState {\n readonly sourceTypeApiName: string;\n readonly currentTypeApiName: string;\n readonly segments: ShapeLinkSegment[];\n readonly where?: WhereClause<ObjectOrInterfaceDefinition>;\n readonly orderBy: ShapeLinkOrderBy[];\n readonly limit?: number;\n readonly distinct: boolean;\n readonly setOperations: ShapeLinkSetOperation[];\n}\n\nclass ShapeLinkBuilderImpl<\n SOURCE extends ObjectOrInterfaceDefinition,\n CURRENT extends ObjectOrInterfaceDefinition,\n> implements ShapeLinkBuilder<SOURCE, CURRENT> {\n readonly #state: ShapeLinkBuilderState;\n readonly $primaryKey: symbol = SourcePrimaryKeySymbol;\n\n constructor(state: ShapeLinkBuilderState) {\n this.#state = state;\n }\n\n pivotTo<L extends LinkNames<CURRENT>>(\n link: L,\n ): ShapeLinkBuilder<SOURCE, LinkedType<CURRENT, L>> {\n const newSegments: ShapeLinkSegment[] = [\n ...this.#state.segments,\n {\n type: \"pivotTo\",\n linkName: link as string,\n sourceType: this.#state.currentTypeApiName,\n // targetType is resolved at link execution time when link metadata is available\n },\n ];\n\n return new ShapeLinkBuilderImpl({\n ...this.#state,\n segments: newSegments,\n // currentTypeApiName is a hint for debugging; actual type resolution happens at execution\n currentTypeApiName: `${this.#state.currentTypeApiName}.${link as string}`,\n });\n }\n\n /** Sets the where filter for this link. Calling multiple times replaces the previous clause (last-write-wins). */\n where(clause: WhereClause<CURRENT>): ShapeLinkBuilder<SOURCE, CURRENT> {\n return new ShapeLinkBuilderImpl({\n ...this.#state,\n where: clause as WhereClause<ObjectOrInterfaceDefinition>,\n });\n }\n\n #setOp(\n type: \"union\" | \"intersect\" | \"subtract\",\n others: ShapeLinkBuilder<SOURCE, CURRENT>[],\n ): ShapeLinkBuilder<SOURCE, CURRENT> {\n return new ShapeLinkBuilderImpl({\n ...this.#state,\n setOperations: [\n ...this.#state.setOperations,\n ...others.map((other) => ({\n type,\n other: (other as ShapeLinkBuilderImpl<SOURCE, CURRENT>)\n .toObjectSetDef(),\n })),\n ],\n });\n }\n\n union(\n ...others: ShapeLinkBuilder<SOURCE, CURRENT>[]\n ): ShapeLinkBuilder<SOURCE, CURRENT> {\n return this.#setOp(\"union\", others);\n }\n\n intersect(\n ...others: ShapeLinkBuilder<SOURCE, CURRENT>[]\n ): ShapeLinkBuilder<SOURCE, CURRENT> {\n return this.#setOp(\"intersect\", others);\n }\n\n subtract(\n ...others: ShapeLinkBuilder<SOURCE, CURRENT>[]\n ): ShapeLinkBuilder<SOURCE, CURRENT> {\n return this.#setOp(\"subtract\", others);\n }\n\n orderBy<K extends PropertyKeys<CURRENT>>(\n property: K,\n direction: \"asc\" | \"desc\" = \"asc\",\n ): ShapeLinkBuilder<SOURCE, CURRENT> {\n return new ShapeLinkBuilderImpl({\n ...this.#state,\n orderBy: [\n ...this.#state.orderBy,\n { property: property as string, direction },\n ],\n });\n }\n\n limit(n: number): ShapeLinkBuilder<SOURCE, CURRENT> {\n if (!Number.isInteger(n) || n <= 0) {\n throw new Error(\n `ShapeLinkBuilder.limit() requires a positive integer, got: ${n}`,\n );\n }\n return new ShapeLinkBuilderImpl({\n ...this.#state,\n limit: n,\n });\n }\n\n distinct(): ShapeLinkBuilder<SOURCE, CURRENT> {\n return new ShapeLinkBuilderImpl({\n ...this.#state,\n distinct: true,\n });\n }\n\n as<TARGET_SHAPE extends ShapeDefinition<CURRENT>>(\n shape: TARGET_SHAPE,\n config: DerivedLinkConfig = {},\n ): ShapeLinkResult<TARGET_SHAPE> {\n // The brand is a compile-time only marker, at runtime it's just undefined\n return {\n targetShape: shape,\n objectSetDef: this.toObjectSetDef(),\n config,\n } as ShapeLinkResult<TARGET_SHAPE>;\n }\n\n toObjectSetDef(): ShapeLinkObjectSetDef {\n return {\n segments: Object.freeze([...this.#state.segments]),\n where: this.#state.where,\n orderBy: this.#state.orderBy.length > 0\n ? Object.freeze([...this.#state.orderBy])\n : undefined,\n limit: this.#state.limit,\n distinct: this.#state.distinct || undefined,\n setOperations: this.#state.setOperations.length > 0\n ? Object.freeze([...this.#state.setOperations])\n : undefined,\n };\n }\n}\n\nexport function createShapeLinkBuilder<\n SOURCE extends ObjectOrInterfaceDefinition,\n CURRENT extends ObjectOrInterfaceDefinition,\n>(sourceTypeApiName: string): ShapeLinkBuilder<SOURCE, CURRENT> {\n return new ShapeLinkBuilderImpl({\n sourceTypeApiName,\n currentTypeApiName: sourceTypeApiName,\n segments: [],\n orderBy: [],\n distinct: false,\n setOperations: [],\n });\n}\n\n/**\n * Creates a new ShapeBuilder for the given base type.\n *\n * @param baseType - The base ObjectTypeDefinition or InterfaceDefinition\n * @param debugName - Optional name for debugging in DevTools\n *\n * @example\n * ```typescript\n * const SlimPlayer = createShapeBuilder(Player, \"SlimPlayer\")\n * .require(\"name\", \"age\")\n * .withDefault(\"position\", \"Unknown\")\n * .build();\n * ```\n */\nexport function createShapeBuilder<BASE extends ObjectOrInterfaceDefinition>(\n baseType: BASE,\n debugName?: string,\n): ShapeBuilder<BASE, {}, {}> {\n const state: ShapeBuilderState = {\n baseType,\n baseTypeApiName: baseType.apiName,\n debugName,\n props: {},\n derivedLinks: [],\n };\n\n return new ShapeBuilderImpl(state);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Palantir Technologies, Inc. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { computeShapeId } from "./computeShapeId.js";
|
|
18
|
+
import { createShapeLinkBuilder } from "./ShapeBuilder.js";
|
|
19
|
+
export function configToShapeDefinition(baseType, config) {
|
|
20
|
+
const baseTypeApiName = baseType.apiName;
|
|
21
|
+
const props = {};
|
|
22
|
+
const seen = new Set();
|
|
23
|
+
function addProp(prop, config2) {
|
|
24
|
+
if (seen.has(prop)) {
|
|
25
|
+
throw new Error(`Property "${prop}" appears in multiple config arrays`);
|
|
26
|
+
}
|
|
27
|
+
seen.add(prop);
|
|
28
|
+
props[prop] = config2;
|
|
29
|
+
}
|
|
30
|
+
if (config.require) {
|
|
31
|
+
for (const prop of config.require) {
|
|
32
|
+
addProp(prop, {
|
|
33
|
+
nullabilityOp: {
|
|
34
|
+
type: "require"
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (config.select) {
|
|
40
|
+
for (const prop of config.select) {
|
|
41
|
+
addProp(prop, {
|
|
42
|
+
nullabilityOp: {
|
|
43
|
+
type: "select"
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (config.dropIfNull) {
|
|
49
|
+
for (const prop of config.dropIfNull) {
|
|
50
|
+
addProp(prop, {
|
|
51
|
+
nullabilityOp: {
|
|
52
|
+
type: "dropIfNull"
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (config.defaults) {
|
|
58
|
+
for (const [prop, defaultValue] of Object.entries(config.defaults)) {
|
|
59
|
+
addProp(prop, {
|
|
60
|
+
nullabilityOp: {
|
|
61
|
+
type: "withDefault",
|
|
62
|
+
defaultValue
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (config.transforms) {
|
|
68
|
+
for (const [prop, transform] of Object.entries(config.transforms)) {
|
|
69
|
+
if (typeof transform !== "function") {
|
|
70
|
+
throw new Error(`transforms["${prop}"] must be a function, got: ${typeof transform}`);
|
|
71
|
+
}
|
|
72
|
+
addProp(prop, {
|
|
73
|
+
nullabilityOp: {
|
|
74
|
+
type: "withTransform",
|
|
75
|
+
transform
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const derivedLinks = [];
|
|
81
|
+
if (config.links) {
|
|
82
|
+
for (const [name, linkConfig] of Object.entries(config.links)) {
|
|
83
|
+
const linkBuilder = createShapeLinkBuilder(baseTypeApiName);
|
|
84
|
+
const traversed = linkConfig.via(linkBuilder);
|
|
85
|
+
const objectSetDef = traversed.toObjectSetDef();
|
|
86
|
+
const targetShape = linkConfig.target;
|
|
87
|
+
derivedLinks.push({
|
|
88
|
+
name,
|
|
89
|
+
objectSetDef,
|
|
90
|
+
targetShape,
|
|
91
|
+
config: {
|
|
92
|
+
defer: linkConfig.defer
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const shapeId = computeShapeId({
|
|
98
|
+
baseTypeApiName,
|
|
99
|
+
props,
|
|
100
|
+
derivedLinks
|
|
101
|
+
});
|
|
102
|
+
return {
|
|
103
|
+
__shapeId: shapeId,
|
|
104
|
+
__debugName: undefined,
|
|
105
|
+
__baseType: baseType,
|
|
106
|
+
__baseTypeApiName: baseTypeApiName,
|
|
107
|
+
__props: Object.freeze({
|
|
108
|
+
...props
|
|
109
|
+
}),
|
|
110
|
+
__derivedLinks: Object.freeze([...derivedLinks]),
|
|
111
|
+
__selectedPropsType: {},
|
|
112
|
+
__derivedLinksType: {}
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=configToShapeDefinition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configToShapeDefinition.js","names":["computeShapeId","createShapeLinkBuilder","configToShapeDefinition","baseType","config","baseTypeApiName","apiName","props","seen","Set","addProp","prop","config2","has","Error","add","require","nullabilityOp","type","select","dropIfNull","defaults","defaultValue","Object","entries","transforms","transform","derivedLinks","links","name","linkConfig","linkBuilder","traversed","via","objectSetDef","toObjectSetDef","targetShape","target","push","defer","shapeId","__shapeId","__debugName","undefined","__baseType","__baseTypeApiName","__props","freeze","__derivedLinks","__selectedPropsType","__derivedLinksType"],"sources":["configToShapeDefinition.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectOrInterfaceDefinition } from \"../ontology/ObjectOrInterface.js\";\nimport { computeShapeId } from \"./computeShapeId.js\";\nimport type {\n InferShapeDefinition,\n InlineShapeConfig,\n} from \"./InlineShapeConfig.js\";\nimport { createShapeLinkBuilder } from \"./ShapeBuilder.js\";\nimport type {\n NullabilityOp,\n ShapeDefinition,\n ShapeDerivedLinkDef,\n ShapeLinkBuilderInternal,\n ShapeLinkObjectSetDef,\n ShapePropertyConfig,\n} from \"./ShapeDefinition.js\";\n\nexport function configToShapeDefinition<\n BASE extends ObjectOrInterfaceDefinition,\n const C extends InlineShapeConfig<BASE>,\n>(\n baseType: BASE,\n config: C,\n): InferShapeDefinition<BASE, C> {\n const baseTypeApiName = baseType.apiName;\n const props: Record<string, ShapePropertyConfig> = {};\n\n const seen = new Set<string>();\n function addProp(prop: string, config2: ShapePropertyConfig) {\n if (seen.has(prop)) {\n throw new Error(`Property \"${prop}\" appears in multiple config arrays`);\n }\n seen.add(prop);\n props[prop] = config2;\n }\n\n if (config.require) {\n for (const prop of config.require) {\n addProp(prop as string, { nullabilityOp: { type: \"require\" } });\n }\n }\n\n if (config.select) {\n for (const prop of config.select) {\n addProp(prop as string, { nullabilityOp: { type: \"select\" } });\n }\n }\n\n if (config.dropIfNull) {\n for (const prop of config.dropIfNull) {\n addProp(prop as string, { nullabilityOp: { type: \"dropIfNull\" } });\n }\n }\n\n if (config.defaults) {\n for (const [prop, defaultValue] of Object.entries(config.defaults)) {\n addProp(prop, {\n nullabilityOp: {\n type: \"withDefault\",\n defaultValue,\n } as NullabilityOp,\n });\n }\n }\n\n if (config.transforms) {\n for (const [prop, transform] of Object.entries(config.transforms)) {\n if (typeof transform !== \"function\") {\n throw new Error(\n `transforms[\"${prop}\"] must be a function, got: ${typeof transform}`,\n );\n }\n addProp(prop, {\n nullabilityOp: {\n type: \"withTransform\",\n transform,\n } as NullabilityOp,\n });\n }\n }\n\n const derivedLinks: ShapeDerivedLinkDef[] = [];\n\n if (config.links) {\n for (const [name, linkConfig] of Object.entries(config.links)) {\n const linkBuilder = createShapeLinkBuilder(baseTypeApiName);\n const traversed = linkConfig.via(linkBuilder as ShapeLinkBuilderInternal);\n const objectSetDef: ShapeLinkObjectSetDef =\n (traversed as ShapeLinkBuilderInternal).toObjectSetDef();\n\n const targetShape: ShapeDefinition<ObjectOrInterfaceDefinition> =\n linkConfig.target;\n\n derivedLinks.push({\n name,\n objectSetDef,\n targetShape,\n config: { defer: linkConfig.defer },\n });\n }\n }\n\n const shapeId = computeShapeId({\n baseTypeApiName,\n props,\n derivedLinks,\n });\n\n return {\n __shapeId: shapeId,\n __debugName: undefined,\n __baseType: baseType,\n __baseTypeApiName: baseTypeApiName,\n __props: Object.freeze({ ...props }),\n __derivedLinks: Object.freeze([...derivedLinks]),\n __selectedPropsType: {} as InferShapeDefinition<\n BASE,\n C\n >[\"__selectedPropsType\"],\n __derivedLinksType: {} as InferShapeDefinition<\n BASE,\n C\n >[\"__derivedLinksType\"],\n } as InferShapeDefinition<BASE, C>;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -20,4 +20,12 @@
|
|
|
20
20
|
|
|
21
21
|
// Error types and runtime values
|
|
22
22
|
export { isSourcePkSymbol, ShapeNullabilityError, SourcePrimaryKeySymbol } from "./ShapeDefinition.js";
|
|
23
|
+
|
|
24
|
+
// Builder functions
|
|
25
|
+
export { createShapeBuilder } from "./ShapeBuilder.js";
|
|
26
|
+
|
|
27
|
+
// Inline config converter
|
|
28
|
+
export { configToShapeDefinition } from "./configToShapeDefinition.js";
|
|
29
|
+
|
|
30
|
+
// Inline config converter uses computeShapeId internally but it is not part of the public API.
|
|
23
31
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["isSourcePkSymbol","ShapeNullabilityError","SourcePrimaryKeySymbol"],"sources":["index.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Core types\nexport type {\n LinkLoadConfig,\n LinkStatus,\n NullabilityViolation,\n PropertyType,\n RequiredProperty,\n ShapeBaseType,\n ShapeBuilder,\n ShapeDefinition,\n ShapeDerivedLinks,\n ShapeInstance,\n ShapeLinkBuilder,\n ShapeLinkResult,\n} from \"./ShapeDefinition.js\";\n\n// Inline shape config types\nexport type {\n InferShapeDefinition,\n InlineLinkConfig,\n InlineShapeConfig,\n} from \"./InlineShapeConfig.js\";\n\n// Error types and runtime values\nexport {\n isSourcePkSymbol,\n ShapeNullabilityError,\n SourcePrimaryKeySymbol,\n} from \"./ShapeDefinition.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAgBA;;AAOA;AACA,SACEA,gBAAgB,EAChBC,qBAAqB,EACrBC,sBAAsB,QACjB,sBAAsB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["isSourcePkSymbol","ShapeNullabilityError","SourcePrimaryKeySymbol","createShapeBuilder","configToShapeDefinition"],"sources":["index.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Core types\nexport type {\n LinkLoadConfig,\n LinkStatus,\n NullabilityViolation,\n PropertyType,\n RequiredProperty,\n ShapeBaseType,\n ShapeBuilder,\n ShapeDefinition,\n ShapeDerivedLinks,\n ShapeInstance,\n ShapeLinkBuilder,\n ShapeLinkResult,\n} from \"./ShapeDefinition.js\";\n\n// Inline shape config types\nexport type {\n InferShapeDefinition,\n InlineLinkConfig,\n InlineShapeConfig,\n} from \"./InlineShapeConfig.js\";\n\n// Error types and runtime values\nexport {\n isSourcePkSymbol,\n ShapeNullabilityError,\n SourcePrimaryKeySymbol,\n} from \"./ShapeDefinition.js\";\n\n// Builder functions\nexport { createShapeBuilder } from \"./ShapeBuilder.js\";\n\n// Inline config converter\nexport { configToShapeDefinition } from \"./configToShapeDefinition.js\";\n\n// Inline config converter uses computeShapeId internally but it is not part of the public API.\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAgBA;;AAOA;AACA,SACEA,gBAAgB,EAChBC,qBAAqB,EACrBC,sBAAsB,QACjB,sBAAsB;;AAE7B;AACA,SAASC,kBAAkB,QAAQ,mBAAmB;;AAEtD;AACA,SAASC,uBAAuB,QAAQ,8BAA8B;;AAEtE","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { D as DerivedLinkConfig, k as NullabilityOp, l as ShapeDerivedLinkDef, m as ShapeLinkObjectSetDef, n as ShapeLinkOrderBy, o as ShapeLinkSegment, p as ShapeLinkSetOperation, q as ShapePropertyConfig } from '../shapes-internal-
|
|
1
|
+
export { D as DerivedLinkConfig, k as NullabilityOp, l as ShapeDerivedLinkDef, m as ShapeLinkObjectSetDef, n as ShapeLinkOrderBy, o as ShapeLinkSegment, p as ShapeLinkSetOperation, q as ShapePropertyConfig } from '../shapes-internal-DQ2ODZcP.cjs';
|
|
2
2
|
import '../ObjectSet-DkBNIajH.cjs';
|
|
3
3
|
import 'type-fest';
|
|
4
4
|
import 'geojson';
|