@canonical/ds-types
Advanced tools
+166
| GNU LESSER GENERAL PUBLIC LICENSE | ||
| Version 3, 29 June 2007 | ||
| Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> | ||
| Everyone is permitted to copy and distribute verbatim copies | ||
| of this license document, but changing it is not allowed. | ||
| This version of the GNU Lesser General Public License incorporates | ||
| the terms and conditions of version 3 of the GNU General Public | ||
| License, supplemented by the additional permissions listed below. | ||
| 0. Additional Definitions. | ||
| As used herein, "this License" refers to version 3 of the GNU Lesser | ||
| General Public License, and the "GNU GPL" refers to version 3 of the GNU | ||
| General Public License. | ||
| "The Library" refers to a covered work governed by this License, | ||
| other than an Application or a Combined Work as defined below. | ||
| An "Application" is any work that makes use of an interface provided | ||
| by the Library, but which is not otherwise based on the Library. | ||
| Defining a subclass of a class defined by the Library is deemed a mode | ||
| of using an interface provided by the Library. | ||
| A "Combined Work" is a work produced by combining or linking an | ||
| Application with the Library. The particular version of the Library | ||
| with which the Combined Work was made is also called the "Linked | ||
| Version". | ||
| The "Minimal Corresponding Source" for a Combined Work means the | ||
| Corresponding Source for the Combined Work, excluding any source code | ||
| for portions of the Combined Work that, considered in isolation, are | ||
| based on the Application, and not on the Linked Version. | ||
| The "Corresponding Application Code" for a Combined Work means the | ||
| object code and/or source code for the Application, including any data | ||
| and utility programs needed for reproducing the Combined Work from the | ||
| Application, but excluding the System Libraries of the Combined Work. | ||
| 1. Exception to Section 3 of the GNU GPL. | ||
| You may convey a covered work under sections 3 and 4 of this License | ||
| without being bound by section 3 of the GNU GPL. | ||
| 2. Conveying Modified Versions. | ||
| If you modify a copy of the Library, and, in your modifications, a | ||
| facility refers to a function or data to be supplied by an Application | ||
| that uses the facility (other than as an argument passed when the | ||
| facility is invoked), then you may convey a copy of the modified | ||
| version: | ||
| a) under this License, provided that you make a good faith effort to | ||
| ensure that, in the event an Application does not supply the | ||
| function or data, the facility still operates, and performs | ||
| whatever part of its purpose remains meaningful, or | ||
| b) under the GNU GPL, with none of the additional permissions of | ||
| this License applicable to that copy. | ||
| 3. Object Code Incorporating Material from Library Header Files. | ||
| The object code form of an Application may incorporate material from | ||
| a header file that is part of the Library. You may convey such object | ||
| code under terms of your choice, provided that, if the incorporated | ||
| material is not limited to numerical parameters, data structure | ||
| layouts and accessors, or small macros, inline functions and templates | ||
| (ten or fewer lines in length), you do both of the following: | ||
| a) Give prominent notice with each copy of the object code that the | ||
| Library is used in it and that the Library and its use are | ||
| covered by this License. | ||
| b) Accompany the object code with a copy of the GNU GPL and this license | ||
| document. | ||
| 4. Combined Works. | ||
| You may convey a Combined Work under terms of your choice that, | ||
| taken together, effectively do not restrict modification of the | ||
| portions of the Library contained in the Combined Work and reverse | ||
| engineering for debugging such modifications, if you also do each of | ||
| the following: | ||
| a) Give prominent notice with each copy of the Combined Work that | ||
| the Library is used in it and that the Library and its use are | ||
| covered by this License. | ||
| b) Accompany the Combined Work with a copy of the GNU GPL and this license | ||
| document. | ||
| c) For a Combined Work that displays copyright notices during | ||
| execution, include the copyright notice for the Library among | ||
| these notices, as well as a reference directing the user to the | ||
| copies of the GNU GPL and this license document. | ||
| d) Do one of the following: | ||
| 0) Convey the Minimal Corresponding Source under the terms of this | ||
| License, and the Corresponding Application Code in a form | ||
| suitable for, and under terms that permit, the user to | ||
| recombine or relink the Application with a modified version of | ||
| the Linked Version to produce a modified Combined Work, in the | ||
| manner specified by section 6 of the GNU GPL for conveying | ||
| Corresponding Source. | ||
| 1) Use a suitable shared library mechanism for linking with the | ||
| Library. A suitable mechanism is one that (a) uses at run time | ||
| a copy of the Library already present on the user's computer | ||
| system, and (b) will operate properly with a modified version | ||
| of the Library that is interface-compatible with the Linked | ||
| Version. | ||
| e) Provide Installation Information, but only if you would otherwise | ||
| be required to provide such information under section 6 of the | ||
| GNU GPL, and only to the extent that such information is | ||
| necessary to install and execute a modified version of the | ||
| Combined Work produced by recombining or relinking the | ||
| Application with a modified version of the Linked Version. (If | ||
| you use option 4d0, the Installation Information must accompany | ||
| the Minimal Corresponding Source and Corresponding Application | ||
| Code. If you use option 4d1, you must provide the Installation | ||
| Information in the manner specified by section 6 of the GNU GPL | ||
| for conveying Corresponding Source.) | ||
| 5. Combined Libraries. | ||
| You may place library facilities that are a work based on the | ||
| Library side by side in a single library together with other library | ||
| facilities that are not Applications and are not covered by this | ||
| License, and convey such a combined library under terms of your | ||
| choice, if you do both of the following: | ||
| a) Accompany the combined library with a copy of the same work based | ||
| on the Library, uncombined with any other library facilities, | ||
| conveyed under the terms of this License. | ||
| b) Give prominent notice with the combined library that part of it | ||
| is a work based on the Library, and explaining where to find the | ||
| accompanying uncombined form of the same work. | ||
| 6. Revised Versions of the GNU Lesser General Public License. | ||
| The Free Software Foundation may publish revised and/or new versions | ||
| of the GNU Lesser General Public License from time to time. Such new | ||
| versions will be similar in spirit to the present version, but may | ||
| differ in detail to address new problems or concerns. | ||
| Each version is given a distinguishing version number. If the | ||
| Library as you received it specifies that a certain numbered version | ||
| of the GNU Lesser General Public License "or any later version" | ||
| applies to it, you have the option of following the terms and | ||
| conditions either of that published version or of any later version | ||
| published by the Free Software Foundation. If the Library as you | ||
| received it does not specify a version number of the GNU Lesser | ||
| General Public License, you may choose any version of the GNU Lesser | ||
| General Public License ever published by the Free Software Foundation. | ||
| If the Library as you received it specifies that a proxy can decide | ||
| whether future versions of the GNU Lesser General Public License shall | ||
| apply, that proxy's public statement of acceptance of any version is | ||
| permanent authorization for you to choose that version for the | ||
| Library. | ||
+6
-5
| { | ||
| "name": "@canonical/ds-types", | ||
| "description": "Types and related type utilities for Pragma.", | ||
| "version": "0.12.0-experimental.0", | ||
| "version": "0.12.0", | ||
| "type": "module", | ||
@@ -46,7 +46,8 @@ "main": "dist/esm/index.js", | ||
| "@biomejs/biome": "2.3.11", | ||
| "@canonical/biome-config": "^0.11.0", | ||
| "@canonical/typescript-config-base": "^0.11.0", | ||
| "@canonical/webarchitect": "^0.12.0-experimental.0", | ||
| "@canonical/biome-config": "^0.12.0", | ||
| "@canonical/typescript-config-base": "^0.12.0", | ||
| "@canonical/webarchitect": "^0.12.0", | ||
| "typescript": "^5.9.3" | ||
| } | ||
| }, | ||
| "gitHead": "0b491caff8f797fef4ba4b7f5514a7c5b915a481" | ||
| } |
| /** | ||
| * Get the unique identifier for an item (url or key) | ||
| * | ||
| * @throws Error if item has neither url nor key | ||
| */ | ||
| export function getItemId(item) { | ||
| if (item.url) | ||
| return item.url; | ||
| if (item.key) | ||
| return item.key; | ||
| throw new Error("Item must have either url or key"); | ||
| } | ||
| /** | ||
| * Annotate a navigation tree with parent references and depth | ||
| * | ||
| * Transforms Item tree into _Item tree with parentUrl and depth. | ||
| * | ||
| * @param root - The root item to annotate | ||
| * @param parentUrl - Parent URL (null for root) | ||
| * @param depth - Current depth (0 for root) | ||
| * @returns Annotated item tree | ||
| */ | ||
| export function annotateTree(root, parentUrl = null, depth = 0) { | ||
| const { items, ...rest } = root; | ||
| const annotated = { | ||
| ...rest, | ||
| parentUrl, | ||
| depth, | ||
| }; | ||
| if (items) { | ||
| annotated.items = items.map((child) => annotateTree(child, getItemId(root), depth + 1)); | ||
| } | ||
| return annotated; | ||
| } | ||
| /** | ||
| * Create an index for O(1) lookup of items by URL or key | ||
| * | ||
| * @param root - The annotated root item | ||
| * @returns Index mapping URL/key to item | ||
| */ | ||
| export function prepareIndex(root) { | ||
| const index = {}; | ||
| const stack = [root]; | ||
| while (stack.length > 0) { | ||
| const item = stack.pop(); | ||
| if (!item) | ||
| continue; | ||
| const id = getItemId(item); | ||
| index[id] = item; | ||
| if (item.items) { | ||
| for (let i = item.items.length - 1; i >= 0; i--) { | ||
| stack.push(item.items[i]); | ||
| } | ||
| } | ||
| } | ||
| return index; | ||
| } | ||
| //# sourceMappingURL=helpers.js.map |
| {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/navigation/helpers.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAkB;IAC1C,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC;IAC9B,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC;IAC9B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAU,EACV,YAA2B,IAAI,EAC/B,KAAK,GAAG,CAAC;IAET,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAChC,MAAM,SAAS,GAAU;QACvB,GAAG,IAAI;QACP,SAAS;QACT,KAAK;KACN,CAAC;IACF,IAAI,KAAK,EAAE,CAAC;QACV,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACpC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAChD,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAW;IACtC,MAAM,KAAK,GAAW,EAAE,CAAC;IACzB,MAAM,KAAK,GAAY,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;QACjB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"} |
| import type { _Index, _Item, Item } from "./types.js"; | ||
| /** | ||
| * Get the unique identifier for an item (url or key) | ||
| * | ||
| * @throws Error if item has neither url nor key | ||
| */ | ||
| export declare function getItemId(item: Item | _Item): string; | ||
| /** | ||
| * Annotate a navigation tree with parent references and depth | ||
| * | ||
| * Transforms Item tree into _Item tree with parentUrl and depth. | ||
| * | ||
| * @param root - The root item to annotate | ||
| * @param parentUrl - Parent URL (null for root) | ||
| * @param depth - Current depth (0 for root) | ||
| * @returns Annotated item tree | ||
| */ | ||
| export declare function annotateTree(root: Item, parentUrl?: string | null, depth?: number): _Item; | ||
| /** | ||
| * Create an index for O(1) lookup of items by URL or key | ||
| * | ||
| * @param root - The annotated root item | ||
| * @returns Index mapping URL/key to item | ||
| */ | ||
| export declare function prepareIndex(root: _Item): _Index; | ||
| //# sourceMappingURL=helpers.d.ts.map |
| {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/navigation/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAIpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,EACV,SAAS,GAAE,MAAM,GAAG,IAAW,EAC/B,KAAK,SAAI,GACR,KAAK,CAaP;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAehD"} |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
21116
19.29%27
-10%144
-36.28%1
Infinity%