@milaboratories/pl-model-common 1.34.0 → 1.35.0
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/drivers/index.cjs +1 -0
- package/dist/drivers/index.d.ts +8 -7
- package/dist/drivers/index.js +1 -0
- package/dist/drivers/pframe/driver.d.ts +1 -1
- package/dist/drivers/pframe/index.cjs +1 -0
- package/dist/drivers/pframe/index.d.ts +8 -7
- package/dist/drivers/pframe/index.js +1 -0
- package/dist/drivers/pframe/spec/anchored.cjs +2 -1
- package/dist/drivers/pframe/spec/anchored.cjs.map +1 -1
- package/dist/drivers/pframe/spec/anchored.d.ts +2 -1
- package/dist/drivers/pframe/spec/anchored.d.ts.map +1 -1
- package/dist/drivers/pframe/spec/anchored.js +2 -1
- package/dist/drivers/pframe/spec/anchored.js.map +1 -1
- package/dist/drivers/pframe/spec/discovered_column.cjs +32 -0
- package/dist/drivers/pframe/spec/discovered_column.cjs.map +1 -0
- package/dist/drivers/pframe/spec/discovered_column.d.ts +35 -0
- package/dist/drivers/pframe/spec/discovered_column.d.ts.map +1 -0
- package/dist/drivers/pframe/spec/discovered_column.js +27 -0
- package/dist/drivers/pframe/spec/discovered_column.js.map +1 -0
- package/dist/drivers/pframe/spec/ids.cjs.map +1 -1
- package/dist/drivers/pframe/spec/ids.d.ts +2 -1
- package/dist/drivers/pframe/spec/ids.d.ts.map +1 -1
- package/dist/drivers/pframe/spec/ids.js.map +1 -1
- package/dist/drivers/pframe/spec/index.cjs +1 -0
- package/dist/drivers/pframe/spec/index.d.ts +3 -2
- package/dist/drivers/pframe/spec/index.js +1 -0
- package/dist/drivers/pframe/spec/spec.cjs +2 -1
- package/dist/drivers/pframe/spec/spec.cjs.map +1 -1
- package/dist/drivers/pframe/spec/spec.d.ts +2 -0
- package/dist/drivers/pframe/spec/spec.d.ts.map +1 -1
- package/dist/drivers/pframe/spec/spec.js +2 -1
- package/dist/drivers/pframe/spec/spec.js.map +1 -1
- package/dist/drivers/pframe/spec_driver.d.ts +1 -1
- package/dist/drivers/pframe/table.d.ts +1 -1
- package/dist/drivers/pframe/table_calculate.d.ts +1 -1
- package/dist/index.cjs +8 -0
- package/dist/index.d.ts +11 -10
- package/dist/index.js +3 -2
- package/dist/ref.cjs +16 -0
- package/dist/ref.cjs.map +1 -1
- package/dist/ref.d.ts +16 -12
- package/dist/ref.d.ts.map +1 -1
- package/dist/ref.js +15 -1
- package/dist/ref.js.map +1 -1
- package/dist/services/service_types.cjs.map +1 -1
- package/dist/services/service_types.d.ts +5 -5
- package/dist/services/service_types.d.ts.map +1 -1
- package/dist/services/service_types.js.map +1 -1
- package/package.json +3 -3
- package/src/drivers/pframe/spec/anchored.ts +2 -1
- package/src/drivers/pframe/spec/discovered_column.ts +65 -0
- package/src/drivers/pframe/spec/ids.ts +3 -1
- package/src/drivers/pframe/spec/index.ts +1 -0
- package/src/drivers/pframe/spec/spec.ts +2 -0
- package/src/ref.test.ts +37 -0
- package/src/ref.ts +34 -1
- package/src/services/service_types.ts +9 -5
package/src/ref.ts
CHANGED
|
@@ -60,7 +60,11 @@ export type Option = {
|
|
|
60
60
|
* @param name - The name of the reference.
|
|
61
61
|
* @param requireEnrichments - Whether the reference requires enrichments.
|
|
62
62
|
*/
|
|
63
|
-
export function createPlRef(
|
|
63
|
+
export function createPlRef(
|
|
64
|
+
blockId: string,
|
|
65
|
+
name: string,
|
|
66
|
+
requireEnrichments: boolean = false,
|
|
67
|
+
): PlRef {
|
|
64
68
|
if (requireEnrichments)
|
|
65
69
|
return {
|
|
66
70
|
__isRef: true,
|
|
@@ -97,6 +101,35 @@ export function withEnrichments(ref: PlRef, requireEnrichments: boolean = true):
|
|
|
97
101
|
}
|
|
98
102
|
}
|
|
99
103
|
|
|
104
|
+
/** Primary dataset reference with an optional filter. */
|
|
105
|
+
export type PrimaryRef = {
|
|
106
|
+
readonly __isPrimaryRef: "v1";
|
|
107
|
+
readonly column: PlRef;
|
|
108
|
+
readonly filter?: PlRef;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
export function isPrimaryRef(value: unknown): value is PrimaryRef {
|
|
112
|
+
return (
|
|
113
|
+
typeof value === "object" &&
|
|
114
|
+
value !== null &&
|
|
115
|
+
(value as { __isPrimaryRef?: unknown }).__isPrimaryRef === "v1" &&
|
|
116
|
+
"column" in value
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export function createPrimaryRef(column: PlRef, filter?: PlRef): PrimaryRef {
|
|
121
|
+
if (filter !== undefined) return { __isPrimaryRef: "v1", column, filter };
|
|
122
|
+
else return { __isPrimaryRef: "v1", column };
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/** Block args accept either form — backward compatible. */
|
|
126
|
+
export type DatasetInput = PlRef | PrimaryRef;
|
|
127
|
+
|
|
128
|
+
/** Dataset option with optional filter choices. */
|
|
129
|
+
export type DatasetOption = Option & {
|
|
130
|
+
readonly filters?: readonly Option[];
|
|
131
|
+
};
|
|
132
|
+
|
|
100
133
|
/** Compare two PlRefs and returns true if they are qual */
|
|
101
134
|
export function plRefsEqual(ref1: PlRef, ref2: PlRef, ignoreEnrichments: boolean = false) {
|
|
102
135
|
return (
|
|
@@ -78,28 +78,32 @@ export interface ServiceDispatch {
|
|
|
78
78
|
// Auto-derived types from the Services const in service_declarations.ts.
|
|
79
79
|
// Adding a service to Services automatically updates all of these.
|
|
80
80
|
|
|
81
|
-
type
|
|
81
|
+
type TServices = typeof Services;
|
|
82
82
|
|
|
83
83
|
type ExtractServiceName<T> = T extends Branded<infer N extends string, any> ? N : never;
|
|
84
84
|
|
|
85
85
|
/** Model-side service interfaces keyed by service name literal. */
|
|
86
86
|
export type ModelServices = {
|
|
87
|
-
[K in keyof
|
|
87
|
+
[K in keyof TServices as ExtractServiceName<TServices[K]>]: InferServiceModel<
|
|
88
|
+
ServiceBrand<TServices[K]>
|
|
89
|
+
>;
|
|
88
90
|
};
|
|
89
91
|
|
|
90
92
|
/** UI-side service interfaces keyed by service name literal. */
|
|
91
93
|
export type UiServices = {
|
|
92
|
-
[K in keyof
|
|
94
|
+
[K in keyof TServices as ExtractServiceName<TServices[K]>]: InferServiceUi<
|
|
95
|
+
ServiceBrand<TServices[K]>
|
|
96
|
+
>;
|
|
93
97
|
};
|
|
94
98
|
|
|
95
99
|
/** Map from Services keys to their unbranded string name literals. */
|
|
96
100
|
export type ServiceNameLiterals = {
|
|
97
|
-
[K in keyof
|
|
101
|
+
[K in keyof TServices]: ExtractServiceName<TServices[K]>;
|
|
98
102
|
};
|
|
99
103
|
|
|
100
104
|
/** Auto-derived requires* feature flags from Services keys. */
|
|
101
105
|
export type ServiceRequireFlags = {
|
|
102
|
-
[K in keyof
|
|
106
|
+
[K in keyof TServices as `requires${K & string}`]?: boolean;
|
|
103
107
|
};
|
|
104
108
|
|
|
105
109
|
export type RequireServices<T extends ServiceName> = UnionToIntersection<
|