@oazmi/superbuild 0.1.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.
Files changed (118) hide show
  1. package/esm/_dnt.shims.d.ts +2 -0
  2. package/esm/_dnt.shims.d.ts.map +1 -0
  3. package/esm/_dnt.shims.js +57 -0
  4. package/esm/deps/jsr.io/@oazmi/esbuild-types/0.28.0/src/mod.d.ts +598 -0
  5. package/esm/deps/jsr.io/@oazmi/esbuild-types/0.28.0/src/mod.d.ts.map +1 -0
  6. package/esm/deps/jsr.io/@oazmi/esbuild-types/0.28.0/src/mod.js +1 -0
  7. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/alias.d.ts +617 -0
  8. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/alias.d.ts.map +1 -0
  9. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/alias.js +671 -0
  10. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array1d.d.ts +487 -0
  11. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array1d.d.ts.map +1 -0
  12. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array1d.js +536 -0
  13. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array2d.d.ts +266 -0
  14. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array2d.d.ts.map +1 -0
  15. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/array2d.js +318 -0
  16. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/binder.d.ts +368 -0
  17. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/binder.d.ts.map +1 -0
  18. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/binder.js +380 -0
  19. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/crossenv.d.ts +711 -0
  20. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/crossenv.d.ts.map +1 -0
  21. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/crossenv.js +1173 -0
  22. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/cryptoman.d.ts +171 -0
  23. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/cryptoman.d.ts.map +1 -0
  24. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/cryptoman.js +308 -0
  25. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/deps.d.ts +10 -0
  26. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/deps.d.ts.map +1 -0
  27. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/deps.js +10 -0
  28. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack.d.ts +168 -0
  29. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack.d.ts.map +1 -0
  30. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack.js +236 -0
  31. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack_varint.d.ts +90 -0
  32. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack_varint.d.ts.map +1 -0
  33. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/eightpack_varint.js +237 -0
  34. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericarray.d.ts +213 -0
  35. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericarray.d.ts.map +1 -0
  36. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericarray.js +363 -0
  37. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericmethods.d.ts +233 -0
  38. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericmethods.d.ts.map +1 -0
  39. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/numericmethods.js +256 -0
  40. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/pathman.d.ts +1436 -0
  41. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/pathman.d.ts.map +1 -0
  42. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/pathman.js +1730 -0
  43. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/promiseman.d.ts +647 -0
  44. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/promiseman.d.ts.map +1 -0
  45. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/promiseman.js +762 -0
  46. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/stringman.d.ts +538 -0
  47. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/stringman.d.ts.map +1 -0
  48. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/stringman.js +626 -0
  49. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/struct.d.ts +734 -0
  50. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/struct.d.ts.map +1 -0
  51. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/struct.js +764 -0
  52. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedbuffer.d.ts +137 -0
  53. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedbuffer.d.ts.map +1 -0
  54. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedbuffer.js +234 -0
  55. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedefs.d.ts +391 -0
  56. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedefs.d.ts.map +1 -0
  57. package/esm/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedefs.js +8 -0
  58. package/esm/deps.d.ts +56 -0
  59. package/esm/deps.d.ts.map +1 -0
  60. package/esm/deps.js +37 -0
  61. package/esm/esbuild/metafile.d.ts +90 -0
  62. package/esm/esbuild/metafile.d.ts.map +1 -0
  63. package/esm/esbuild/metafile.js +275 -0
  64. package/esm/esbuild/native.d.ts +95 -0
  65. package/esm/esbuild/native.d.ts.map +1 -0
  66. package/esm/esbuild/native.js +127 -0
  67. package/esm/esbuild/outputfile.d.ts +86 -0
  68. package/esm/esbuild/outputfile.d.ts.map +1 -0
  69. package/esm/esbuild/outputfile.js +221 -0
  70. package/esm/esbuild/strongtypes.d.ts +90 -0
  71. package/esm/esbuild/strongtypes.d.ts.map +1 -0
  72. package/esm/esbuild/strongtypes.js +8 -0
  73. package/esm/esbuild/typedefs.d.ts +121 -0
  74. package/esm/esbuild/typedefs.d.ts.map +1 -0
  75. package/esm/esbuild/typedefs.js +55 -0
  76. package/esm/esbuild/weaktypes.d.ts +46 -0
  77. package/esm/esbuild/weaktypes.d.ts.map +1 -0
  78. package/esm/esbuild/weaktypes.js +8 -0
  79. package/esm/funcdefs.d.ts +89 -0
  80. package/esm/funcdefs.d.ts.map +1 -0
  81. package/esm/funcdefs.js +145 -0
  82. package/esm/mod.d.ts +4 -0
  83. package/esm/mod.d.ts.map +1 -0
  84. package/esm/mod.js +2 -0
  85. package/esm/package.json +3 -0
  86. package/esm/plugins/emissions_driver.d.ts +33 -0
  87. package/esm/plugins/emissions_driver.d.ts.map +1 -0
  88. package/esm/plugins/emissions_driver.js +260 -0
  89. package/esm/plugins/long_build.d.ts +138 -0
  90. package/esm/plugins/long_build.d.ts.map +1 -0
  91. package/esm/plugins/long_build.js +288 -0
  92. package/esm/plugins/native_replica.d.ts +48 -0
  93. package/esm/plugins/native_replica.d.ts.map +1 -0
  94. package/esm/plugins/native_replica.js +122 -0
  95. package/esm/super/build.d.ts +53 -0
  96. package/esm/super/build.d.ts.map +1 -0
  97. package/esm/super/build.js +39 -0
  98. package/esm/super/build_context.d.ts +83 -0
  99. package/esm/super/build_context.d.ts.map +1 -0
  100. package/esm/super/build_context.js +124 -0
  101. package/esm/super/mod.d.ts +12 -0
  102. package/esm/super/mod.d.ts.map +1 -0
  103. package/esm/super/mod.js +9 -0
  104. package/esm/super/plugin.d.ts +23 -0
  105. package/esm/super/plugin.d.ts.map +1 -0
  106. package/esm/super/plugin.js +31 -0
  107. package/esm/super/plugin_build.d.ts +38 -0
  108. package/esm/super/plugin_build.d.ts.map +1 -0
  109. package/esm/super/plugin_build.js +198 -0
  110. package/esm/super/typedefs.d.ts +323 -0
  111. package/esm/super/typedefs.d.ts.map +1 -0
  112. package/esm/super/typedefs.js +10 -0
  113. package/esm/typedefs.d.ts +21 -0
  114. package/esm/typedefs.d.ts.map +1 -0
  115. package/esm/typedefs.js +5 -0
  116. package/license.md +37 -0
  117. package/package.json +88 -0
  118. package/readme.md +181 -0
@@ -0,0 +1,391 @@
1
+ /** utility typescript type and interface definitions.
2
+ *
3
+ * @module
4
+ */
5
+ /** get the constructor function of type `T` */
6
+ export type ConstructorOf<T, Args extends any[] = any[]> = new (...args: Args) => T;
7
+ /** get the prototype object of a class `CLS` */
8
+ export type PrototypeOf<CLS, Args extends any[] = any[]> = CLS extends {
9
+ new (...args: any[]): infer U;
10
+ } ? U : never;
11
+ /** turn optional properties `P` of interface `T` into required */
12
+ export type Require<T, P extends keyof T> = Omit<T, P> & Required<Pick<T, P>>;
13
+ /** turn properties `P` of interface `T` into optional */
14
+ export type Optional<T, P extends keyof T> = Omit<T, P> & Partial<Pick<T, P>>;
15
+ /** extract all optional fields from type `T` */
16
+ export type OptionalKeysOf<T> = {
17
+ [K in keyof T as (undefined extends T[K] ? K : never)]: T[K];
18
+ };
19
+ /** get all non-symbol property keys of a particular type `T`. */
20
+ export type NonSymbolKeys<T> = {
21
+ [K in keyof T]: K extends symbol ? never : K;
22
+ }[keyof T];
23
+ /** @deprecated
24
+ * use {@link MembersOf} instead
25
+ */
26
+ export type ClassFieldsOf<T> = {
27
+ [K in keyof T as (T[K] extends Function ? never : K)]: T[K];
28
+ };
29
+ /** get all methods of a class-instance */
30
+ export type MethodsOf<T> = {
31
+ [K in keyof T as (T[K] extends Function ? K : never)]: T[K];
32
+ };
33
+ /** get all functions of a class-instance */
34
+ export type CallableFunctionsOf<T> = {
35
+ [K in keyof T as (T[K] extends (CallableFunction & ((this: T, ...args: any) => any)) ? K : never)]: T[K];
36
+ };
37
+ /** get all data members (non-methods) of a class-instance */
38
+ export type MembersOf<T> = Omit<T, keyof MethodsOf<T>>;
39
+ /** map each entry (key-value pair) of an object, to a tuple of the key and its corresponding value.
40
+ *
41
+ * the output of this type is what the builtin `Object.entries` static method should ideally return if it were typed strictly.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * const obj = { kill: "your", self: "ok", tomorrow: 420 } as const
46
+ * type EntriesOfObj = EntriesOf<typeof obj>
47
+ * // the IDE will now infer the type to be:
48
+ * // `type EntriesOfObj = Array<["kill", "your"] | ["self", "ok"] | ["tomorrow", 420]>`
49
+ * // had we not used the `as const` narrowing utility, the output would've then been:
50
+ * // `type EntriesOfObj = Array<["kill", string] | ["self", string] | ["tomorrow", number]>`
51
+ * ```
52
+ */
53
+ export type EntriesOf<T> = Array<{
54
+ [K in keyof T]: [key: K, value: T[K]];
55
+ }[keyof T]>;
56
+ /** turn all fields of an object `T` to optional, deeply.
57
+ *
58
+ * > [!note]
59
+ * > we exclude many built-in types and classes so that they are not turned into partial types.
60
+ * > here is the full list of built-in types and classes (aside from primitives) that are not turned into partial objects:
61
+ * >
62
+ * > `Function | Array<any> | Set<any> | Map<any, any> | WeakSet<any> | WeakMap<any, any> | TypedArray | URL | String | BigInt | Number | Boolean | Symbol`
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * const my_obj = {
67
+ * a: 1,
68
+ * b: { c: 2 },
69
+ * d: { e: { f: 3 }, g: 4 },
70
+ * h: { i: [{ j: 5 }, { k: 6 }] },
71
+ * l: { m: ((arg: string) => "hello") },
72
+ * n: new URL("https://example.com"),
73
+ * o: new Map<string, number>([["a", 1], ["b", 2]]),
74
+ * } as const
75
+ *
76
+ * type DeeplyPartial_my_obj = DeepPartial<typeof my_obj>
77
+ * type ManuallyConstructed_DeeplyPartial_my_obj = {
78
+ * a?: 1,
79
+ * b?: { c?: 2 },
80
+ * d?: { e?: { f?: 3 }, g?: 4 },
81
+ * h?: { i?: readonly [_0?: { j?: 5 } | undefined, _1?: { k?: 6 } | undefined] },
82
+ * l?: { m?: ((arg: string) => string) },
83
+ * n?: URL,
84
+ * o?: Map<string, number>,
85
+ * }
86
+ *
87
+ * type BothTypesAreEqual_1 = DeeplyPartial_my_obj extends ManuallyConstructed_DeeplyPartial_my_obj ? true : false
88
+ * type BothTypesAreEqual_2 = ManuallyConstructed_DeeplyPartial_my_obj extends DeeplyPartial_my_obj ? true : false
89
+ *
90
+ * const temp: true = true
91
+ * temp satisfies BothTypesAreEqual_1
92
+ * temp satisfies BothTypesAreEqual_2
93
+ * ```
94
+ */
95
+ export type DeepPartial<T> = T extends (Function | Array<any> | Set<any> | Map<any, any> | WeakSet<any> | WeakMap<any, any> | TypedArray | URL | String | BigInt | Number | Boolean | Symbol) ? T : T extends Record<string, any> ? {
96
+ [P in keyof T]?: DeepPartial<T[P]>;
97
+ } : T;
98
+ /** turn all fields of an object `T` to required, deeply.
99
+ *
100
+ * > [!note]
101
+ * > we exclude many built-in types and classes so that they are not turned into required types.
102
+ * > here is the full list of built-in types and classes (aside from primitives) that are not turned into required objects:
103
+ * >
104
+ * > `Function | Array<any> | Set<any> | Map<any, any> | WeakSet<any> | WeakMap<any, any> | TypedArray | URL | String | BigInt | Number | Boolean | Symbol`
105
+ *
106
+ * @example
107
+ * ```ts
108
+ * type MyType = {
109
+ * a?: 1,
110
+ * b: { c?: 2 },
111
+ * d: { e?: { f: 3 }, g?: 4 },
112
+ * h: { i?: [_0?: { j?: 5 } | undefined, _1?: { k?: 6 } | undefined] },
113
+ * l?: { m?: ((arg: string) => string), n: 7 | undefined, o?: 8 | undefined },
114
+ * }
115
+ *
116
+ * type MyType_DeeplyRequired = DeepRequired<MyType>
117
+ *
118
+ * type ManuallyConstructed_MyType_DeeplyRequired = DeepRequired<{
119
+ * a: 1,
120
+ * b: { c: 2 },
121
+ * d: { e: { f: 3 }, g: 4 },
122
+ * h: { i: [_0?: { j?: 5 } | undefined, _1?: { k?: 6 } | undefined] },
123
+ * l: { m: ((arg: string) => string), n: 7 | undefined, o: 8 },
124
+ * }>
125
+ *
126
+ * type BothTypesAreEqual_1 = MyType_DeeplyRequired extends ManuallyConstructed_MyType_DeeplyRequired ? true : false
127
+ * type BothTypesAreEqual_2 = ManuallyConstructed_MyType_DeeplyRequired extends MyType_DeeplyRequired ? true : false
128
+ *
129
+ * const temp: true = true
130
+ * temp satisfies BothTypesAreEqual_1
131
+ * temp satisfies BothTypesAreEqual_2
132
+ * ```
133
+ */
134
+ export type DeepRequired<T> = T extends (Function | Array<any> | Set<any> | Map<any, any> | WeakSet<any> | WeakMap<any, any> | TypedArray | URL | String | BigInt | Number | Boolean | Symbol) ? T : T extends Record<string, any> ? {
135
+ [P in keyof T]-?: DeepRequired<T[P]>;
136
+ } : T;
137
+ /** get the stringified type name of a type-parameter. */
138
+ export type TypeName<T> = T extends string ? "string" : T extends BigInt ? "bigint" : T extends number ? "number" : T extends boolean ? "boolean" : T extends undefined ? "undefined" : T extends symbol ? "symbol" : T extends Function ? "function" : T extends Array<any> ? "array" : T extends null ? "null" : "object";
139
+ /** add a prefix `PRE` to all property names of object `T` */
140
+ export type PrefixProps<T, PRE extends string> = {
141
+ [K in keyof T & string as `${PRE}${K}`]: T[K];
142
+ };
143
+ /** add a postfix (suffix) `POST` to all property names of object `T` */
144
+ export type PostfixProps<T, POST extends string> = {
145
+ [K in keyof T & string as `${K}${POST}`]: T[K];
146
+ };
147
+ /** allows one to declare static interface `CONSTRUCTOR` that must be implemented by a class `CLASS`.
148
+ *
149
+ * > [!important]
150
+ * > your `CONSTRUCTOR` static interface **must** contain a constructor method in it.
151
+ * > although, that constructor could be super generalized too, despite the other static methods being narrowly defined.
152
+ * > take the following for instance:
153
+ *
154
+ * ```ts
155
+ * // interface for a class that must implement a static `clone` method, which should return a clone of the provided object `obj`, but omit numeric keys
156
+ * interface Cloneable {
157
+ * constructor(...args: any[]): any
158
+ * clone<T>(obj: T): Omit<T, number>
159
+ * }
160
+ * ```
161
+ *
162
+ * to use this utility type, you must provide the static interface as the first parameter,
163
+ * and then `typeof CLASS_NAME` (which is the name of the class itself) as the second parameter.
164
+ *
165
+ * @example
166
+ * ```ts
167
+ * interface Stack<T> {
168
+ * push(...items: T[]): void
169
+ * pop(): T | undefined
170
+ * clear(): T[]
171
+ * }
172
+ *
173
+ * interface CloneableStack {
174
+ * new <V>(...args: any[]): Stack<V>
175
+ * // this static method should remove all function objects from the stack
176
+ * clone<T>(original_stack: Stack<T>): Stack<Exclude<T, Function>>
177
+ * }
178
+ *
179
+ * const stack_class_alias = class MyStack<T> implements StaticImplements<CloneableStack, typeof MyStack> {
180
+ * arr: T[]
181
+ * constructor(first_item?: T) {
182
+ * this.arr = first_item === undefined ? [] : [first_item]
183
+ * }
184
+ *
185
+ * push(...items: T[]): void { this.arr.push(...items) }
186
+ * pop(): T | undefined { return this.arr.pop() }
187
+ * clear(): T[] { return this.arr.splice(0) }
188
+ *
189
+ * static clone<V>(some_stack: Stack<V>) {
190
+ * const arr_no_func = (some_stack as MyStack<V>).arr.filter((v) => typeof v !== "function") as Array<Exclude<V, Function>>
191
+ * const new_stack = new this<Exclude<V, Function>>()
192
+ * new_stack.push(...arr_no_func)
193
+ * return new_stack
194
+ * }
195
+ * }
196
+ * ```
197
+ */
198
+ export type StaticImplements<CONSTRUCTOR extends new (...args: any[]) => any, CLASS extends CONSTRUCTOR> = InstanceType<CONSTRUCTOR>;
199
+ /** `DecrementNumber[N]` returns `N-1`, for up to `N = 10` */
200
+ export type DecrementNumber = [never, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
201
+ /** `IncrementNumber[N]` returns `N+1`, for up to `N = 10` */
202
+ export type IncrementNumber = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
203
+ /** repeat a string `S` for up to `N = 10` times */
204
+ export type RepeatString<S extends string, N extends number> = N extends 1 ? S : `${S}${RepeatString<S, DecrementNumber[N]>}`;
205
+ /** create an element-wise intersection between two tuples.
206
+ *
207
+ * > [!note]
208
+ * > the intersection `any & T` typically produces `any`,
209
+ * but when put through this utility type, it will produce `T` for convenience of usage with function parameters intersection.
210
+ *
211
+ * @example
212
+ * ```ts
213
+ * type A = TupleIntersect<[number, unknown, string, any], [5, number, string, boolean, 99]>
214
+ * // A === [5, number, string, boolean]
215
+ * ```
216
+ */
217
+ export type TupleIntersect<ARR1 extends any[], ARR2 extends any[], N extends number | never = 0> = N extends number ? IntersectKnown<ARR1[N], ARR2[N]> extends (undefined | never) ? [] : [
218
+ IntersectKnown<ARR1[N], ARR2[N]>,
219
+ ...TupleIntersect<ARR1, ARR2, IncrementNumber[N]>
220
+ ] : [];
221
+ /** create an element-wise intersection between two tuples. note that the intersection `any & T` does not produce `T` for some reason unfortunately.
222
+ * @example
223
+ * ```ts
224
+ * type A = TupleUnion<[number, unknown, string, boolean], [5, number, string, any, 99]>
225
+ * // A === [number, number, string, boolean>, undefined | 99]
226
+ * ```
227
+ */
228
+ export type TupleUnion<ARR1 extends any[], ARR2 extends any[], N extends number | never = 0> = N extends number ? UnionKnown<ARR1[N], ARR2[N]> extends (undefined | never) ? [] : [
229
+ UnionKnown<ARR1[N], ARR2[N]>,
230
+ ...TupleUnion<ARR1, ARR2, IncrementNumber[N]>
231
+ ] : [];
232
+ /** perform a union between two types, making sure that if either is `unknown`, then it'll be treated as `never`.
233
+ *
234
+ * why is this useful? because in typescript's `unknown` is a supertype of all types (similar to `any`), which means that something like `T | unknown = unknown`.
235
+ * thus, in a scenario where such a behavior is not desired, you can use this utility type: `UnionKnown<T, unknown> = T`
236
+ */
237
+ export type UnionKnown<A, B> = (unknown extends A ? B : A) | (unknown extends B ? A : B);
238
+ /** perform an intersection between two types, making sure that if either is `unknown` or `any`, then it'll be ignored, and only the known type will persevere.
239
+ *
240
+ * why is this useful? because in typescript's `any` is a subtype of all types, which means that something like `T & any = any` (strangely unintuitive).
241
+ * thus, in a scenario where such a behavior is not desired, you can use this utility type: `UnionKnown<T, any> = T`
242
+ */
243
+ export type IntersectKnown<A, B> = (unknown extends A ? B : A) & (unknown extends B ? A : B);
244
+ /** an array of type `T`, and fixed length `L`.
245
+ *
246
+ * this technique was copied from [stackexchange, user "mstephen19"](https://stackoverflow.com/a/73384647).
247
+ *
248
+ * the generic `R` type parameter is for recursion, and not intended for external use.
249
+ */
250
+ export type ArrayFixedLength<T, L extends number, R extends T[] = []> = R["length"] extends L ? R : ArrayFixedLength<T, L, [...R, T]>;
251
+ /** represents a scalar mathematical function of `ParamLength` number of input parameters (or variables).
252
+ *
253
+ * for instance, a scalar addition function is merely a mapping from domains:
254
+ * $X,Y \in \R$ to $Z \in \R$: $\text{Add} : X \times Y \rightarrow Z$ .
255
+ *
256
+ * ```ts
257
+ * const add_func: NumericMapFunc<2> = (x, y) => x + y
258
+ * ```
259
+ */
260
+ export type NumericMapFunc<ParamLength extends number> = (...params: ArrayFixedLength<number, ParamLength>) => number;
261
+ /** represents a higher-order scalar function of `ParamLength` number of array input parameters, which are then manipulated based on index `i`, for all possible `i`.
262
+ *
263
+ * for instance, to model an array addition function, you would simply do:
264
+ *
265
+ * ```ts
266
+ * const add_hof: IndexNumericMapFunc<2> = (arrX, arrY) => (i) => arrX[i] + arrY[i]
267
+ * ```
268
+ */
269
+ export type IndexNumericMapFunc<ParamLength extends number> = (...params: ArrayFixedLength<NumericArray, ParamLength>) => (i: number) => number;
270
+ /** unsigned integer, signed integer, or IEEE-754 float */
271
+ export type NumericFormatType = "u" | "i" | "f";
272
+ /** little-endian, big-endian, clamped 1-byte, or 1-byte */
273
+ export type NumericEndianType = "l" | "b";
274
+ /** specify 1-byte, 2-bytes, 4-bytes, or 8-bytes of numeric data*/
275
+ export type DByteSize = "1" | "2" | "4" | "8";
276
+ /** indicates the name of a numeric type.
277
+ *
278
+ * the collection of possible valid numeric types is:
279
+ * - `"u1"`, `"u2"`, `"u4"`, `"u8"`, `"i1"`, `"i2"`, `"i4"`, `"i8"`, `"f4"`, `"f8"`, `"u1c"`
280
+ *
281
+ * the first character specifies the format:
282
+ * - `u` = unsigned integer
283
+ * - `i` = signed integer
284
+ * - `f` = float IEEE-754
285
+ *
286
+ * the second character specifies the byte-size:
287
+ * - `1` = one byte
288
+ * - `2` = two bytes (short)
289
+ * - `4` = four bytes (word)
290
+ * - `8` = eight bytes (long)
291
+ */
292
+ export type NumericDType = Exclude<`${NumericFormatType}${DByteSize}` | "u1c", "f1" | "f2" | "u8" | "i8">;
293
+ /** abstract constructor of any typed array, such as `new Uint8Array(...)`
294
+ * you can narrow down the constructor through the use of a {@link NumericDType} string annotation
295
+ * @example
296
+ * ```ts
297
+ * const clamp_arr_constructor: TypedArrayConstructor<"u1c"> = Uint8ClampedArray
298
+ * ```
299
+ */
300
+ export type TypedArrayConstructor<DType extends NumericDType = NumericDType> = {
301
+ "u1": Uint8ArrayConstructor;
302
+ "u1c": Uint8ClampedArrayConstructor;
303
+ "u2": Uint16ArrayConstructor;
304
+ "u4": Uint32ArrayConstructor;
305
+ "i1": Int8ArrayConstructor;
306
+ "i2": Int16ArrayConstructor;
307
+ "i4": Int32ArrayConstructor;
308
+ "f4": Float32ArrayConstructor;
309
+ "f8": Float64ArrayConstructor;
310
+ }[DType];
311
+ /** an instance of any typed array, such as `Uint8Array`
312
+ * you can narrow down the type through the use of a {@link NumericDType} string annotation
313
+ * @example
314
+ * ```ts
315
+ * const clammped_bytes_arr: TypedArray<"u1c"> = new Uint8ClampedArray(42)
316
+ * ```
317
+ */
318
+ export type TypedArray<DType extends NumericDType = NumericDType> = {
319
+ "u1": Uint8Array;
320
+ "u1c": Uint8ClampedArray;
321
+ "u2": Uint16Array;
322
+ "u4": Uint32Array;
323
+ "i1": Int8Array;
324
+ "i2": Int16Array;
325
+ "i4": Int32Array;
326
+ "f4": Float32Array;
327
+ "f8": Float64Array;
328
+ }[DType];
329
+ /** any numeric array */
330
+ export type NumericArray = TypedArray | Array<number>;
331
+ /** indicates the name of a numeric type with required endian information, or the use of a variable-sized integer.
332
+ *
333
+ * the collection of possible valid numeric types is:
334
+ * - `"u1"`, `"i1"`, `"u2l"`, `"u2b"`, `"i2l"`, `"i2b"`, `"u4l"`, `"u4b"`, `"u8l"`, `"u8b"`, `"i4l"`, `"i4b"`, `"i8l"`, `"i8b"`, `"f4l"`, `"f4b"`, `"f8l"`, `"f8b"`, `"u1c"`,
335
+ *
336
+ * the first character specifies the format:
337
+ * - `u` = unsigned integer
338
+ * - `i` = signed integer
339
+ * - `f` = float IEEE-754
340
+ *
341
+ * the second character specifies the byte-size:
342
+ * - `1` = one byte
343
+ * - `2` = two bytes (short)
344
+ * - `4` = four bytes (word)
345
+ * - `8` = eight bytes (long)
346
+ *
347
+ * the third character specifies the endianness. but in the case of unsigned one byte integers, the `c` character specifies if the value is clamped to 255:
348
+ * - `l` = little endian
349
+ * - `b` = big endian
350
+ * - `c` = clamped (only valid for `"u1c"` type)
351
+ *
352
+ * for variable byte sized numbers, use {@link VarNumericType}.
353
+ */
354
+ export type NumericType = Exclude<`${NumericDType}${NumericEndianType}` | "u1" | "u1c" | "i1", `${"u1" | "u1c" | "i1"}${NumericEndianType}`>;
355
+ /** an array (regular javascript array) of numbers can be interpreted as an array of formatted binary numbers. */
356
+ export type NumericArrayType = `${NumericType}[]`;
357
+ /** indicates either a variable bytes sized unsigned or signed integer. see [wikipedia](https://en.wikipedia.org/wiki/Variable-length_quantity) to understand how they're represented in binary. */
358
+ export type VarNumericType = "uv" | "iv";
359
+ /** numeric array version of {@link VarNumericType}. */
360
+ export type VarNumericArrayType = `${VarNumericType}[]`;
361
+ /** a float number in the range `0.0` to `1.0` (inclusive) */
362
+ export type UnitInterval = number;
363
+ export declare const isUnitInterval: (value: number) => value is UnitInterval;
364
+ /** an integer number in the range `0` to `255` (inclusive) */
365
+ export type UByte = number;
366
+ export declare const isUByte: (value: number) => value is UByte;
367
+ /** a float number in the range `0` to `360` (inclusive), indicating the degree rotation angle. */
368
+ export type Degrees = number;
369
+ export declare const isDegrees: (value: number) => value is Degrees;
370
+ /** a float number in the range `0` to `pi` (inclusive), indicating the radian rotation angle. */
371
+ export type Radians = number;
372
+ export declare const isRadians: (value: number) => value is Radians;
373
+ /** represents either a regular 2d html canvas context, or an offscreen 2d canvas's context. */
374
+ export type Ctx2D = CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D;
375
+ /** represents either a regular value `T` or a `Promise` thereof. */
376
+ export type MaybePromise<T> = T | Promise<T>;
377
+ /** represents either a regular value `T` or a `PromiseLike` thereof. */
378
+ export type MaybePromiseLike<T> = T | PromiseLike<T>;
379
+ /** the type definition of a `Promise` resolver function. */
380
+ export type PromiseResolver<T> = ((value: T | PromiseLike<T>) => void);
381
+ /** the type definition of a `Promise` rejector function. */
382
+ export type PromiseRejector<T> = ((reason?: any) => void);
383
+ /** represents a typical javasctipt object, something that pairs `keys` with `values` */
384
+ export type Obj = {
385
+ [key: PropertyKey]: any;
386
+ };
387
+ /** represents an empty javasctipt object */
388
+ export type EmptyObj = {
389
+ [key: PropertyKey]: never;
390
+ };
391
+ //# sourceMappingURL=typedefs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typedefs.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedefs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** utility typescript type and interface definitions.
2
+ *
3
+ * @module
4
+ */
5
+ export const isUnitInterval = (value) => value >= 0 && value <= 1 ? true : false;
6
+ export const isUByte = (value) => value >= 0 && value <= 255 && value === (value | 0) ? true : false;
7
+ export const isDegrees = (value) => value >= 0 && value <= 360 ? true : false;
8
+ export const isRadians = (value) => value >= 0 && value <= Math.PI ? true : false;
package/esm/deps.d.ts ADDED
@@ -0,0 +1,56 @@
1
+ import type { MaybePromise } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedefs.js";
2
+ export type * as esbuild from "./deps/jsr.io/@oazmi/esbuild-types/0.28.0/src/mod.js";
3
+ export { array_isEmpty, console_log, date_now, dom_clearTimeout, dom_setTimeout, json_stringify, math_max, object_assign, object_entries, object_fromEntries, object_keys, promise_all, promise_outside } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/alias.js";
4
+ export { bind_array_push } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/binder.js";
5
+ export { ensureFile, getRuntimeCwd, identifyCurrentRuntime, statEntry, writeFile } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/crossenv.js";
6
+ export { crc32 } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/cryptoman.js";
7
+ export { ensureEndSlash, ensureFileUrlIsLocalPath, ensureStartDotSlash, fileUrlToLocalPath, getUriScheme, isAbsolutePath, parseFilepathInfo, pathToPosixPath, relativePath, resolveAsUrl, resolvePathFactory } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/pathman.js";
8
+ export { promiseOutside, promiseTimeout } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/promiseman.js";
9
+ export { escapeLiteralStringForRegex } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/stringman.js";
10
+ export { isArray, isFunction, isRecord, isString } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/struct.js";
11
+ export type { MaybePromise, MaybePromiseLike, Optional, Require } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/typedefs.js";
12
+ /** flags used for minifying (or eliminating) debugging logs and asserts, when an intelligent bundler, such as `esbuild`, is used. */
13
+ export declare const enum DEBUG {
14
+ LOG = 1,
15
+ ASSERT = 1,
16
+ ERROR = 1,
17
+ PRODUCTION = 1,
18
+ MINIFY = 0
19
+ }
20
+ /** check if `obj` is either `null` or `undefined`. */
21
+ export declare const isNull: (obj: any) => obj is (null | undefined);
22
+ export declare const noop: () => undefined;
23
+ export declare const urlToString: (url: string | URL) => string;
24
+ export declare const ensureRelativeDotSlash: (str: string) => string;
25
+ export declare const textEncoder: TextEncoder, textDecoder: TextDecoder;
26
+ /** this utility type lets makes your typescript LSP auto-suggest literals defined in the input generic type `T`,
27
+ * while also permitting arbitrary strings to be used.
28
+ *
29
+ * TODO: add this utility type to kitchensink.
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * type InstallationPath = AutoSuggestOrString<0 | undefined | "$CWD" | "C-DRIVE" | "$ROOT">
34
+ *
35
+ * const installProgram = async (installation_path: InstallationPath) => {
36
+ * const abs_path = installation_path === undefined ? ""
37
+ * : installation_path === "$CWD" ? Deno.cwd() // LSP will suggest `0 | "$CWD" | "C-DRIVE" | "$ROOT"`.
38
+ * : installation_path === "C-DRIVE" ? "C:/" // LSP will suggest `0 | "C-DRIVE" | "$ROOT"`.
39
+ * : installation_path === "$ROOT" ? "/" // LSP will suggest `0 | "$ROOT"`.
40
+ * : installation_path === 0 ? "" // LSP will suggest `0`.
41
+ * : installation_path satisfies string // `(string & {})` is still a valid string.
42
+ * // perform installation
43
+ * }
44
+ *
45
+ * await installProgram("$CWD") // valid, and LSP will suggest the default options first.
46
+ * await installProgram(undefined) // valid.
47
+ * await installProgram(0) // valid.
48
+ * await installProgram("/etc/hello/world") // also valid.
49
+ * ```
50
+ */
51
+ export type AutoSuggestOrString<T> = T | (string & {});
52
+ /** represents either a regular value `T`, or nullable value (`null | undefined`), or a `Promise` thereof. */
53
+ export type MaybePromiseOrNull<T> = MaybePromise<T | null | undefined>;
54
+ /** represents either a regular value `T`, or void value (`null | undefined | void`), or a `Promise` thereof. */
55
+ export type MaybePromiseOrVoid<T> = MaybePromise<T | null | undefined | void>;
56
+ //# sourceMappingURL=deps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yDAAyD,CAAA;AAG3F,YAAY,KAAK,OAAO,MAAM,sDAAsD,CAAA;AACpF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sDAAsD,CAAA;AACrQ,OAAO,EAAE,eAAe,EAAE,MAAM,uDAAuD,CAAA;AACvF,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yDAAyD,CAAA;AACjJ,OAAO,EAAE,KAAK,EAAE,MAAM,0DAA0D,CAAA;AAChF,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAA;AAC5Q,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,2DAA2D,CAAA;AAC1G,OAAO,EAAE,2BAA2B,EAAE,MAAM,0DAA0D,CAAA;AACtG,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,uDAAuD,CAAA;AAC/G,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,yDAAyD,CAAA;AAEhI,qIAAqI;AACrI,0BAAkB,KAAK;IACtB,GAAG,IAAI;IACP,MAAM,IAAI;IACV,KAAK,IAAI;IACT,UAAU,IAAI;IACd,MAAM,IAAI;CACV;AAED,sDAAsD;AACtD,eAAO,MAAM,MAAM,QAAS,GAAG,KAAG,GAAG,IAAI,CAAC,IAAI,GAAG,SAAS,CAEzD,CAAA;AAED,eAAO,MAAM,IAAI,iBAAoB,CAAA;AAErC,eAAO,MAAM,WAAW,QAAS,MAAM,GAAG,GAAG,KAAG,MAAmD,CAAA;AAYnG,eAAO,MAAM,sBAAsB,QAAS,MAAM,KAAG,MAIpD,CAAA;AAED,eAAO,MACN,WAAW,aAAoB,EAC/B,WAAW,aAAoB,CAAA;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;EAwBE;AACF,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEtD,6GAA6G;AAC7G,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAA;AAEtE,gHAAgH;AAChH,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,CAAA"}
package/esm/deps.js ADDED
@@ -0,0 +1,37 @@
1
+ import { isString } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/struct.js";
2
+ export { array_isEmpty, console_log, date_now, dom_clearTimeout, dom_setTimeout, json_stringify, math_max, object_assign, object_entries, object_fromEntries, object_keys, promise_all, promise_outside } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/alias.js";
3
+ export { bind_array_push } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/binder.js";
4
+ export { ensureFile, getRuntimeCwd, identifyCurrentRuntime, statEntry, writeFile } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/crossenv.js";
5
+ export { crc32 } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/cryptoman.js";
6
+ export { ensureEndSlash, ensureFileUrlIsLocalPath, ensureStartDotSlash, fileUrlToLocalPath, getUriScheme, isAbsolutePath, parseFilepathInfo, pathToPosixPath, relativePath, resolveAsUrl, resolvePathFactory } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/pathman.js";
7
+ export { promiseOutside, promiseTimeout } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/promiseman.js";
8
+ export { escapeLiteralStringForRegex } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/stringman.js";
9
+ export { isArray, isFunction, isRecord, isString } from "./deps/jsr.io/@oazmi/kitchensink/0.10.0/src/struct.js";
10
+ /** flags used for minifying (or eliminating) debugging logs and asserts, when an intelligent bundler, such as `esbuild`, is used. */
11
+ export var DEBUG;
12
+ (function (DEBUG) {
13
+ DEBUG[DEBUG["LOG"] = 1] = "LOG";
14
+ DEBUG[DEBUG["ASSERT"] = 1] = "ASSERT";
15
+ DEBUG[DEBUG["ERROR"] = 1] = "ERROR";
16
+ DEBUG[DEBUG["PRODUCTION"] = 1] = "PRODUCTION";
17
+ DEBUG[DEBUG["MINIFY"] = 0] = "MINIFY";
18
+ })(DEBUG || (DEBUG = {}));
19
+ /** check if `obj` is either `null` or `undefined`. */
20
+ export const isNull = (obj) => {
21
+ return (obj === undefined) || (obj === null);
22
+ };
23
+ export const noop = (() => undefined);
24
+ export const urlToString = (url) => { return isString(url) ? url : url.href; };
25
+ const
26
+ // posix directory path separator.
27
+ sep = "/",
28
+ // posix relative directory path navigator.
29
+ dotslash = "./",
30
+ // posix relative parent directory path navigator.
31
+ dotdotslash = "../", string_starts_with = (str, starts_with) => str.startsWith(starts_with), string_ends_with = (str, ends_with) => str.endsWith(ends_with);
32
+ export const ensureRelativeDotSlash = (str) => {
33
+ return (string_starts_with(str, dotslash) || string_starts_with(str, dotdotslash)) ? str
34
+ : string_starts_with(str, sep) ? "." + str
35
+ : dotslash + str;
36
+ };
37
+ export const textEncoder = new TextEncoder(), textDecoder = new TextDecoder();
@@ -0,0 +1,90 @@
1
+ /** utility submodule for converting esbuild's metafile and output file interfaces into more convenient and manageable format.
2
+ *
3
+ * @module
4
+ */
5
+ import type { SuperBuildContext } from "../super/build_context.js";
6
+ import type { AbsolutePath, NamespacedPath, Path } from "../typedefs.js";
7
+ import { OutputFileEntity, type OutputFileEntityMap } from "./outputfile.js";
8
+ import type { EsbuildMetafile, EsbuildMetafileImportProps, EsbuildPartialMessage } from "./strongtypes.js";
9
+ import type { EsbuildOutputFile } from "./typedefs.js";
10
+ interface FormattedMetafileOutputProps {
11
+ /** namespaced and absolute resolved file path of entry-point that is directly the result of this output file. */
12
+ entryPoint?: NamespacedPath;
13
+ /** namespaced and absolute resolved file paths of input resources that contributed (i.e. were bundled) into this output file. */
14
+ inputs: NamespacedPath[];
15
+ /** the `path` field inside specifies the absolute file paths to other output files that need to be imported by this output file,
16
+ * unless the `external` flag is set to `true`, in which case the import `path` does not correspond to a local output file.
17
+ */
18
+ imports: Array<EsbuildMetafileImportProps>;
19
+ }
20
+ export interface MetafileConfig {
21
+ /** a reference to the {@link SuperBuildContext.resolvedResourceRegistry} dictionary,
22
+ * used for recalling the arguments returned by the resolver, loader, and transformer phases.
23
+ */
24
+ resolvedResourceRegistry: SuperBuildContext["resolvedResourceRegistry"];
25
+ /** a function that resolves the given path segment to an absolute path, with respect to `cwd` or `absWorkingDir`. */
26
+ resolvePath: (path: Path) => AbsolutePath;
27
+ }
28
+ export declare class Metafile implements MetafileConfig {
29
+ protected readonly value: EsbuildMetafile;
30
+ readonly inputs: Map<NamespacedPath, EsbuildMetafile["inputs"][string]>;
31
+ readonly outputs: Map<AbsolutePath, FormattedMetafileOutputProps>;
32
+ outputFileEntities: OutputFileEntityMap;
33
+ /** a copy of the {@link SuperBuildContext.resolvedResourceRegistry}, where all keys use lower case characters.
34
+ * this is extremely important, as we've internally standardized to using only lower casing for namespaced resolved paths,
35
+ * in order to evade the filesystem case-insesnsitivity problem when matching strings.
36
+ */
37
+ resolvedResourceRegistry: SuperBuildContext["resolvedResourceRegistry"];
38
+ /** a function that resolves the given path segment to an absolute path, with respect to `cwd` or `absWorkingDir`. */
39
+ resolvePath: (path: Path) => AbsolutePath;
40
+ /** holds all warnings that have occurred during method calls. */
41
+ warnings: EsbuildPartialMessage[];
42
+ constructor(esbuild_metafile: EsbuildMetafile, config: MetafileConfig);
43
+ addFile(esbuild_file: EsbuildOutputFile): OutputFileEntity;
44
+ /** this function is intended to run _after_ you have added **all** of your {@link EsbuildOutputFile | esbuild output files} via {@link addFile}.
45
+ * what it does is that it simply calls the {@link OutputFileEntity.scanEsbuildImports} method of each {@link outputFileEntities | registered file},
46
+ * so that they can discover the file entity associated which each of their esbuild-based imports.
47
+ */
48
+ scanEsbuildImports(): void;
49
+ /** find the file entity corresponding to the given absolute output path. you won't receive entities associated with external paths/references. */
50
+ getFile(output_path_key: string): OutputFileEntity | undefined;
51
+ /** find all file entities that incorporate (i.e. originate from) certain namespaced source files/resources into their bundled form. */
52
+ findFileFromSources(predicate_fn: (file_sources: Array<{
53
+ namespace: string;
54
+ path: string;
55
+ }>) => boolean): Array<OutputFileEntity>;
56
+ /** prepares a dependency graph from the current list of {@link outputFileEntities}. */
57
+ createFileDependencyGraph(): Map<OutputFileEntity, Set<OutputFileEntity>>;
58
+ /** write all output file entities (those with `entity.write !== false`) to the filesystem. */
59
+ writeFiles(allow_overwrite?: boolean): Promise<void>;
60
+ /** normalizes an esbuild metafile to use namespaced paths (`${namespace}:${resolved_path}`) for resolved paths,
61
+ * and absolute paths for output file paths.
62
+ *
63
+ * this function mutates the original metafile object passed to it.
64
+ */
65
+ static asNormalized(esbuild_metafile: EsbuildMetafile): EsbuildMetafile;
66
+ /** lower the casing of an esbuild metafile's namespaced resolved paths,
67
+ * output file paths, and external paths, based on your `config` configuration.
68
+ *
69
+ * lower casing helps in ensuring that there won't be any casing conflicts when searching for a particular resource.
70
+ *
71
+ * this function mutates the original metafile object passed to it.
72
+ */
73
+ static asLowercased(esbuild_metafile: EsbuildMetafile, config: {
74
+ /** specify if namespaced resolved paths should be lower cased. */
75
+ namespacedPaths: boolean;
76
+ /** specify if output file paths should be lower cased. */
77
+ outputPaths: boolean;
78
+ /** specify if external import paths should be lower cased. */
79
+ externalPaths: boolean;
80
+ }): EsbuildMetafile;
81
+ /** resolve all relative file paths in a {@link asNormalized | **normalized**} esbuild metafile to absolute file paths.
82
+ *
83
+ * this function mutates the original metafile object passed to it.
84
+ */
85
+ static asAbsolute(esbuild_metafile: EsbuildMetafile, config: {
86
+ resolvePath: (path: string) => string;
87
+ }): EsbuildMetafile;
88
+ }
89
+ export {};
90
+ //# sourceMappingURL=metafile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metafile.d.ts","sourceRoot":"","sources":["../../src/esbuild/metafile.ts"],"names":[],"mappings":"AAAA;;;EAGE;AAIF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,IAAI,EAAgB,MAAM,gBAAgB,CAAA;AACtF,OAAO,EAAE,gBAAgB,EAAE,KAAK,mBAAmB,EAAoB,MAAM,iBAAiB,CAAA;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAC1G,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAqCtD,UAAU,4BAA4B;IACrC,iHAAiH;IACjH,UAAU,CAAC,EAAE,cAAc,CAAA;IAE3B,iIAAiI;IACjI,MAAM,EAAE,cAAc,EAAE,CAAA;IAExB;;MAEE;IACF,OAAO,EAAE,KAAK,CAAC,0BAA0B,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,cAAc;IAC9B;;MAEE;IACF,wBAAwB,EAAE,iBAAiB,CAAC,0BAA0B,CAAC,CAAA;IAEvE,qHAAqH;IACrH,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,YAAY,CAAA;CACzC;AAED,qBAAa,QAAS,YAAW,cAAc;IAC9C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IACzC,SAAgB,MAAM,EAAE,GAAG,CAAC,cAAc,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9E,SAAgB,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,4BAA4B,CAAC,CAAA;IACjE,kBAAkB,EAAE,mBAAmB,CAAY;IAE1D;;;MAGE;IACF,wBAAwB,EAAE,iBAAiB,CAAC,0BAA0B,CAAC,CAAA;IAEvE,qHAAqH;IAC9G,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,YAAY,CAAA;IAEhD,iEAAiE;IAC1D,QAAQ,EAAE,qBAAqB,EAAE,CAAK;gBAEjC,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc;IAwB9D,OAAO,CAAC,YAAY,EAAE,iBAAiB,GAAG,gBAAgB;IAQjE;;;MAGE;IACK,kBAAkB,IAAI,IAAI;IAMjC,kJAAkJ;IAC3I,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAOrE,uIAAuI;IAChI,mBAAmB,CACzB,YAAY,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,OAAO,GACjF,KAAK,CAAC,gBAAgB,CAAC;IAS1B,uFAAuF;IAChF,yBAAyB,IAAI,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAYhF,8FAA8F;IACjF,UAAU,CAAC,eAAe,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxE;;;;MAIE;IACF,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,eAAe,GAAG,eAAe;IAoCvE;;;;;;MAME;IACF,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE;QAC9D,kEAAkE;QAClE,eAAe,EAAE,OAAO,CAAC;QACzB,0DAA0D;QAC1D,WAAW,EAAE,OAAO,CAAC;QACrB,8DAA8D;QAC9D,aAAa,EAAE,OAAO,CAAC;KACvB,GAAG,eAAe;IAyCnB;;;MAGE;IACF,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE;QAC5D,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;KACtC,GAAG,eAAe;CA4BnB"}