@metreeca/keep
    Preparing search index...
    • Hierarchical product classification with localised labels.

      The broader link to the parent category also writes the inverse narrower link, which the foreign narrower property exposes as a read-only view. The upper link writes no inverse, and the foreign lower property reads it in the reverse direction.

      Returns ResourceShape<
          [
              () => ResourceShape<
                  [
                      () => ResourceShape<
                          [],
                          {
                              label: NoInfer<{ forward: ... }> & PropertyConstraints<string> & {
                                  kind: "property";
                                  range: Range<(...), (...), (...)>;
                              };
                              comment: NoInfer<{ forward: ... }> & PropertyConstraints<string> & {
                                  kind: "property";
                                  range: Range<(...), (...), (...)>;
                              };
                          },
                      >,
                  ],
                  {
                      id: Id;
                      type: Type;
                      created: NoInfer<{ hidden: true }> & PropertyConstraints<string> & {
                          kind: "property";
                          range: Range<
                              <const C extends StringValueConstraints<string> = {}>(
                                  constraints?: C,
                              ) => StringShape<Legal<(...), (...)>>,
                              1,
                              1,
                          >;
                      };
                      updated: NoInfer<{ hidden: true }> & PropertyConstraints<string> & {
                          kind: "property";
                          range: Range<
                              <const C extends StringValueConstraints<string> = {}>(
                                  constraints?: C,
                              ) => StringShape<Legal<(...), (...)>>,
                              undefined,
                              1,
                          >;
                      };
                  },
              >,
          ],
          {
              label: PropertyConstraints<string> & {
                  kind: "property";
                  range: Range<
                      DictionaryConstraints & { kind: "dictionary" } & { uniqueLang: true },
                      1,
                      1,
                  >;
              };
              comment: PropertyConstraints<string> & {
                  kind: "property";
                  range: Range<
                      DictionaryConstraints & { kind: "dictionary" } & { uniqueLang: true },
                      undefined,
                      1,
                  >;
              };
              featured: PropertyConstraints<string> & {
                  kind: "property";
                  range: Range<
                      {
                          <const C extends BooleanConstraints<boolean> = {}>(
                              constraints?: C,
                          ): BooleanShape<Legal<C, boolean>>;
                          <const V extends boolean>(value: V): BooleanShape<V>;
                      },
                      1,
                      1,
                  >;
              };
              code: PropertyConstraints<string> & {
                  kind: "property";
                  range: Range<StringShape<string>, 1, 1>;
              };
              title: PropertyConstraints<string> & {
                  kind: "property";
                  range: Range<
                      DictionaryConstraints & { kind: "dictionary" } & { uniqueLang: true },
                      1,
                      1,
                  >;
              };
              description: PropertyConstraints<string> & {
                  kind: "property";
                  range: Range<
                      DictionaryConstraints & { kind: "dictionary" } & { uniqueLang: true },
                      undefined,
                      1,
                  >;
              };
              broader: NoInfer<{ forward: string; reverse: string }> & PropertyConstraints<
                  string,
              > & {
                  kind: "property";
                  range: Range<
                      ReferenceShape<
                          () => ResourceShape<[() => ResourceShape<[() => ResourceShape<[], { label: NoInfer<{ readonly forward: string; }> & PropertyConstraints<string> & { readonly kind: "property"; readonly range: Range<DictionaryConstraints & { ...; } & { ...; }, 1, 1>; }; comment: NoInfer<{ ...; }> & ... 1 more ... & { ...; }; }>], { ...; }>]...,
                      >,
                      undefined,
                      1,
                  >;
              };
              narrower: NoInfer<{ foreign: true }> & PropertyConstraints<string> & {
                  kind: "property";
                  range: Range<
                      ReferenceShape<
                          () => ResourceShape<[() => ResourceShape<[() => ResourceShape<[], { label: NoInfer<{ readonly forward: string; }> & PropertyConstraints<string> & { readonly kind: "property"; readonly range: Range<DictionaryConstraints & { ...; } & { ...; }, 1, 1>; }; comment: NoInfer<{ ...; }> & ... 1 more ... & { ...; }; }>], { ...; }>]...,
                      >,
                      undefined,
                      undefined,
                  >;
              };
              upper: PropertyConstraints<string> & {
                  kind: "property";
                  range: Range<
                      ReferenceShape<
                          () => ResourceShape<[() => ResourceShape<[() => ResourceShape<[], { label: NoInfer<{ readonly forward: string; }> & PropertyConstraints<string> & { readonly kind: "property"; readonly range: Range<DictionaryConstraints & { ...; } & { ...; }, 1, 1>; }; comment: NoInfer<{ ...; }> & ... 1 more ... & { ...; }; }>], { ...; }>]...,
                      >,
                      undefined,
                      1,
                  >;
              };
              lower: NoInfer<{ foreign: true; reverse: string }> & PropertyConstraints<
                  string,
              > & {
                  kind: "property";
                  range: Range<
                      ReferenceShape<
                          () => ResourceShape<[() => ResourceShape<[() => ResourceShape<[], { label: NoInfer<{ readonly forward: string; }> & PropertyConstraints<string> & { readonly kind: "property"; readonly range: Range<DictionaryConstraints & { ...; } & { ...; }, 1, 1>; }; comment: NoInfer<{ ...; }> & ... 1 more ... & { ...; }; }>], { ...; }>]...,
                      >,
                      undefined,
                      undefined,
                  >;
              };
          },
      >