@veryfront/ext-content-mdx 0.1.1122 → 0.1.1123
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/esm/deno.js +1 -1
- package/esm/src/utils/base64url.d.ts +9 -1
- package/esm/src/utils/base64url.d.ts.map +1 -1
- package/esm/src/utils/base64url.js +25 -11
- package/esm/src/utils/index.d.ts +2 -1
- package/esm/src/utils/index.d.ts.map +1 -1
- package/esm/src/utils/index.js +2 -1
- package/esm/src/utils/subscriber-set.d.ts +19 -0
- package/esm/src/utils/subscriber-set.d.ts.map +1 -0
- package/esm/src/utils/subscriber-set.js +38 -0
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/package.json +2 -2
package/esm/deno.js
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Encode a string as standard base64. Latin-1 input (all code points <= 0xFF)
|
|
3
|
+
* is encoded with btoa's binary-string semantics; input outside Latin-1 falls
|
|
4
|
+
* back to UTF-8 bytes. Callers that need guaranteed UTF-8 bytes regardless of
|
|
5
|
+
* input (e.g. data: URLs decoded as UTF-8) should use
|
|
6
|
+
* `encodeBase64Bytes(new TextEncoder().encode(value))` instead.
|
|
7
|
+
*/
|
|
2
8
|
export declare function encodeBase64(value: string): string;
|
|
9
|
+
/** Encode raw bytes as standard base64. */
|
|
10
|
+
export declare function encodeBase64Bytes(bytes: Uint8Array): string;
|
|
3
11
|
/** Encode a string as unpadded base64url. */
|
|
4
12
|
export declare function base64urlEncode(input: string): string;
|
|
5
13
|
/** Encode raw bytes as unpadded base64url. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64url.d.ts","sourceRoot":"","sources":["../../../src/src/utils/base64url.ts"],"names":[],"mappings":"AAYA
|
|
1
|
+
{"version":3,"file":"base64url.d.ts","sourceRoot":"","sources":["../../../src/src/utils/base64url.ts"],"names":[],"mappings":"AAYA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAelD;AAED,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAa3D;AAED,6CAA6C;AAC7C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,8CAA8C;AAC9C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE9D"}
|
|
@@ -5,19 +5,21 @@ import * as dntShim from "../../_dnt.shims.js";
|
|
|
5
5
|
function toBase64Url(b64) {
|
|
6
6
|
return b64.replaceAll("+", "-").replaceAll("/", "_").replaceAll("=", "");
|
|
7
7
|
}
|
|
8
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* Encode a string as standard base64. Latin-1 input (all code points <= 0xFF)
|
|
10
|
+
* is encoded with btoa's binary-string semantics; input outside Latin-1 falls
|
|
11
|
+
* back to UTF-8 bytes. Callers that need guaranteed UTF-8 bytes regardless of
|
|
12
|
+
* input (e.g. data: URLs decoded as UTF-8) should use
|
|
13
|
+
* `encodeBase64Bytes(new TextEncoder().encode(value))` instead.
|
|
14
|
+
*/
|
|
9
15
|
export function encodeBase64(value) {
|
|
10
16
|
if (typeof globalThis.btoa === "function") {
|
|
11
17
|
try {
|
|
12
18
|
return globalThis.btoa(value);
|
|
13
19
|
}
|
|
14
20
|
catch (_) {
|
|
15
|
-
/* expected: non-Latin1 string — fall back to
|
|
16
|
-
|
|
17
|
-
let binary = "";
|
|
18
|
-
for (const byte of bytes)
|
|
19
|
-
binary += String.fromCharCode(byte);
|
|
20
|
-
return globalThis.btoa(binary);
|
|
21
|
+
/* expected: non-Latin1 string — fall back to UTF-8 bytes */
|
|
22
|
+
return encodeBase64Bytes(new TextEncoder().encode(value));
|
|
21
23
|
}
|
|
22
24
|
}
|
|
23
25
|
const bufferCtor = dntShim.dntGlobalThis.Buffer;
|
|
@@ -26,14 +28,26 @@ export function encodeBase64(value) {
|
|
|
26
28
|
// This file ships in client bundles — keep it dependency-free (no error registry).
|
|
27
29
|
throw new Error("Base64 encoding is not supported in this runtime");
|
|
28
30
|
}
|
|
31
|
+
/** Encode raw bytes as standard base64. */
|
|
32
|
+
export function encodeBase64Bytes(bytes) {
|
|
33
|
+
// Prefer Buffer where available (Node): avoids building a large intermediate
|
|
34
|
+
// binary string, which is slower and can hit maximum-string-size limits.
|
|
35
|
+
const bufferCtor = dntShim.dntGlobalThis.Buffer;
|
|
36
|
+
if (bufferCtor)
|
|
37
|
+
return bufferCtor.from(bytes).toString("base64");
|
|
38
|
+
if (typeof globalThis.btoa === "function") {
|
|
39
|
+
let binary = "";
|
|
40
|
+
for (const byte of bytes)
|
|
41
|
+
binary += String.fromCharCode(byte);
|
|
42
|
+
return globalThis.btoa(binary);
|
|
43
|
+
}
|
|
44
|
+
throw new Error("Base64 encoding is not supported in this runtime");
|
|
45
|
+
}
|
|
29
46
|
/** Encode a string as unpadded base64url. */
|
|
30
47
|
export function base64urlEncode(input) {
|
|
31
48
|
return toBase64Url(encodeBase64(input));
|
|
32
49
|
}
|
|
33
50
|
/** Encode raw bytes as unpadded base64url. */
|
|
34
51
|
export function base64urlEncodeBytes(bytes) {
|
|
35
|
-
|
|
36
|
-
for (const byte of bytes)
|
|
37
|
-
binary += String.fromCharCode(byte);
|
|
38
|
-
return toBase64Url(btoa(binary));
|
|
52
|
+
return toBase64Url(encodeBase64Bytes(bytes));
|
|
39
53
|
}
|
package/esm/src/utils/index.d.ts
CHANGED
|
@@ -17,8 +17,9 @@ export { redactSensitive, sanitizeUrlCredentials, sanitizeUrlForSpan } from "./l
|
|
|
17
17
|
export { BREAKPOINT_LG, BREAKPOINT_MD, BREAKPOINT_SM, BREAKPOINT_XL, BYTES_PER_KB, DEFAULT_ALLOWED_CDN_HOSTS, DEFAULT_BUILD_CONCURRENCY, DEFAULT_DASHBOARD_PORT, DEFAULT_LRU_MAX_ENTRIES, DEV_SERVER_ENDPOINTS, FORBIDDEN_PATH_PATTERNS, getDenoStdNodeBase, getReactImportMap, HASH_SEED_DJB2, HASH_SEED_FNV1A, HMR_CLIENT_RELOAD_DELAY_MS, HMR_CLOSE_MESSAGE_TOO_LARGE, HMR_CLOSE_NORMAL, HMR_CLOSE_RATE_LIMIT, HMR_MAX_MESSAGE_SIZE_BYTES, HMR_MAX_MESSAGES_PER_MINUTE, HMR_RATE_LIMIT_WINDOW_MS, HTTP_BAD_REQUEST, HTTP_CONTENT_TYPE_IMAGE_GIF, HTTP_CONTENT_TYPE_IMAGE_ICO, HTTP_CONTENT_TYPE_IMAGE_JPEG, HTTP_CONTENT_TYPE_IMAGE_PNG, HTTP_CONTENT_TYPE_IMAGE_SVG, HTTP_CONTENT_TYPE_IMAGE_WEBP, HTTP_CONTENT_TYPES, HTTP_MODULE_FETCH_TIMEOUT_MS, HTTP_NETWORK_CONNECT_TIMEOUT, HTTP_NOT_FOUND, HTTP_NOT_IMPLEMENTED, HTTP_OK, HTTP_REDIRECT_FOUND, HTTP_SERVER_ERROR, HTTP_STATUS_CLIENT_ERROR_MIN, HTTP_STATUS_REDIRECT_MIN, HTTP_STATUS_SERVER_ERROR_MIN, HTTP_STATUS_SUCCESS_MIN, HTTP_UNAVAILABLE, IMAGE_OPTIMIZATION, MAX_BATCH_SIZE, MAX_PATH_LENGTH, MAX_PATH_TRAVERSAL_DEPTH, MS_PER_SECOND, PREFETCH_DEFAULT_DELAY_MS, PREFETCH_DEFAULT_TIMEOUT_MS, PREFETCH_MAX_SIZE_BYTES, REACT_DEFAULT_VERSION, RESPONSIVE_IMAGE_WIDTH_LG, RESPONSIVE_IMAGE_WIDTHS, RSC_MANIFEST_CACHE_TTL_MS, TSX_LAYOUT_MAX_ENTRIES, TSX_LAYOUT_PER_PROJECT_MAX_ENTRIES, Z_INDEX_DEV_INDICATOR, Z_INDEX_ERROR_OVERLAY, } from "./constants/index.js";
|
|
18
18
|
export { VERSION } from "./version.js";
|
|
19
19
|
export { type BundleCode as HashBundleCode, computeCodeHash, computeHash, computeHashBytes, fnv1aHash, shortHash, simpleHash, } from "./hash-utils.js";
|
|
20
|
-
export { base64urlEncode, base64urlEncodeBytes, encodeBase64 } from "./base64url.js";
|
|
20
|
+
export { base64urlEncode, base64urlEncodeBytes, encodeBase64, encodeBase64Bytes, } from "./base64url.js";
|
|
21
21
|
export { sleep } from "./sleep.js";
|
|
22
|
+
export { createSubscriberSet, type SubscriberSet } from "./subscriber-set.js";
|
|
22
23
|
export { MemoCache, memoize, memoizeAsync, simpleHash as memoizeHash } from "./memoize.js";
|
|
23
24
|
export { normalizePath } from "./path-utils.js";
|
|
24
25
|
export { type BundleCode, type BundleMetadata, getBundleManifestStore } from "./bundle-manifest.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,IAAI,0BAA0B,EAC1D,WAAW,EACX,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,MAAM,EACN,mBAAmB,EACnB,cAAc,EACd,0BAA0B,EAC1B,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG1E,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEjG,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,0BAA0B,EAC1B,2BAA2B,EAC3B,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,EACxB,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,4BAA4B,EAC5B,4BAA4B,EAC5B,cAAc,EACd,oBAAoB,EACpB,OAAO,EACP,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,kCAAkC,EAClC,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EACL,KAAK,UAAU,IAAI,cAAc,EACjC,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,IAAI,0BAA0B,EAC1D,WAAW,EACX,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,MAAM,EACN,mBAAmB,EACnB,cAAc,EACd,0BAA0B,EAC1B,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG1E,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEjG,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,0BAA0B,EAC1B,2BAA2B,EAC3B,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,EACxB,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,4BAA4B,EAC5B,4BAA4B,EAC5B,cAAc,EACd,oBAAoB,EACpB,OAAO,EACP,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,kCAAkC,EAClC,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EACL,KAAK,UAAU,IAAI,cAAc,EACjC,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE9E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEpG,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
package/esm/src/utils/index.js
CHANGED
|
@@ -17,8 +17,9 @@ export { redactSensitive, sanitizeUrlCredentials, sanitizeUrlForSpan } from "./l
|
|
|
17
17
|
export { BREAKPOINT_LG, BREAKPOINT_MD, BREAKPOINT_SM, BREAKPOINT_XL, BYTES_PER_KB, DEFAULT_ALLOWED_CDN_HOSTS, DEFAULT_BUILD_CONCURRENCY, DEFAULT_DASHBOARD_PORT, DEFAULT_LRU_MAX_ENTRIES, DEV_SERVER_ENDPOINTS, FORBIDDEN_PATH_PATTERNS, getDenoStdNodeBase, getReactImportMap, HASH_SEED_DJB2, HASH_SEED_FNV1A, HMR_CLIENT_RELOAD_DELAY_MS, HMR_CLOSE_MESSAGE_TOO_LARGE, HMR_CLOSE_NORMAL, HMR_CLOSE_RATE_LIMIT, HMR_MAX_MESSAGE_SIZE_BYTES, HMR_MAX_MESSAGES_PER_MINUTE, HMR_RATE_LIMIT_WINDOW_MS, HTTP_BAD_REQUEST, HTTP_CONTENT_TYPE_IMAGE_GIF, HTTP_CONTENT_TYPE_IMAGE_ICO, HTTP_CONTENT_TYPE_IMAGE_JPEG, HTTP_CONTENT_TYPE_IMAGE_PNG, HTTP_CONTENT_TYPE_IMAGE_SVG, HTTP_CONTENT_TYPE_IMAGE_WEBP, HTTP_CONTENT_TYPES, HTTP_MODULE_FETCH_TIMEOUT_MS, HTTP_NETWORK_CONNECT_TIMEOUT, HTTP_NOT_FOUND, HTTP_NOT_IMPLEMENTED, HTTP_OK, HTTP_REDIRECT_FOUND, HTTP_SERVER_ERROR, HTTP_STATUS_CLIENT_ERROR_MIN, HTTP_STATUS_REDIRECT_MIN, HTTP_STATUS_SERVER_ERROR_MIN, HTTP_STATUS_SUCCESS_MIN, HTTP_UNAVAILABLE, IMAGE_OPTIMIZATION, MAX_BATCH_SIZE, MAX_PATH_LENGTH, MAX_PATH_TRAVERSAL_DEPTH, MS_PER_SECOND, PREFETCH_DEFAULT_DELAY_MS, PREFETCH_DEFAULT_TIMEOUT_MS, PREFETCH_MAX_SIZE_BYTES, REACT_DEFAULT_VERSION, RESPONSIVE_IMAGE_WIDTH_LG, RESPONSIVE_IMAGE_WIDTHS, RSC_MANIFEST_CACHE_TTL_MS, TSX_LAYOUT_MAX_ENTRIES, TSX_LAYOUT_PER_PROJECT_MAX_ENTRIES, Z_INDEX_DEV_INDICATOR, Z_INDEX_ERROR_OVERLAY, } from "./constants/index.js";
|
|
18
18
|
export { VERSION } from "./version.js";
|
|
19
19
|
export { computeCodeHash, computeHash, computeHashBytes, fnv1aHash, shortHash, simpleHash, } from "./hash-utils.js";
|
|
20
|
-
export { base64urlEncode, base64urlEncodeBytes, encodeBase64 } from "./base64url.js";
|
|
20
|
+
export { base64urlEncode, base64urlEncodeBytes, encodeBase64, encodeBase64Bytes, } from "./base64url.js";
|
|
21
21
|
export { sleep } from "./sleep.js";
|
|
22
|
+
export { createSubscriberSet } from "./subscriber-set.js";
|
|
22
23
|
export { MemoCache, memoize, memoizeAsync, simpleHash as memoizeHash } from "./memoize.js";
|
|
23
24
|
export { normalizePath } from "./path-utils.js";
|
|
24
25
|
export { getBundleManifestStore } from "./bundle-manifest.js";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Listener registry returned by {@link createSubscriberSet}. */
|
|
2
|
+
export interface SubscriberSet<Args extends unknown[] = []> {
|
|
3
|
+
/** Register a listener; returns its unsubscribe function. */
|
|
4
|
+
subscribe(listener: (...args: Args) => void): () => void;
|
|
5
|
+
/** Invoke every listener; a throwing listener never stops the others. */
|
|
6
|
+
notify(...args: Args): void;
|
|
7
|
+
/** Number of registered listeners. */
|
|
8
|
+
readonly size: number;
|
|
9
|
+
/** Remove all listeners. */
|
|
10
|
+
clear(): void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create a subscriber set: the canonical subscribe/notify observable used
|
|
14
|
+
* across modules. Notification iterates a snapshot, so a listener that
|
|
15
|
+
* unsubscribes (itself or others) mid-notify is safe, and listener errors are
|
|
16
|
+
* isolated (routed to `onListenerError` when provided, otherwise swallowed).
|
|
17
|
+
*/
|
|
18
|
+
export declare function createSubscriberSet<Args extends unknown[] = []>(onListenerError?: (error: unknown) => void): SubscriberSet<Args>;
|
|
19
|
+
//# sourceMappingURL=subscriber-set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscriber-set.d.ts","sourceRoot":"","sources":["../../../src/src/utils/subscriber-set.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,WAAW,aAAa,CAAC,IAAI,SAAS,OAAO,EAAE,GAAG,EAAE;IACxD,6DAA6D;IAC7D,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACzD,yEAAyE;IACzE,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,SAAS,OAAO,EAAE,GAAG,EAAE,EAC7D,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GACzC,aAAa,CAAC,IAAI,CAAC,CA8BrB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a subscriber set: the canonical subscribe/notify observable used
|
|
3
|
+
* across modules. Notification iterates a snapshot, so a listener that
|
|
4
|
+
* unsubscribes (itself or others) mid-notify is safe, and listener errors are
|
|
5
|
+
* isolated (routed to `onListenerError` when provided, otherwise swallowed).
|
|
6
|
+
*/
|
|
7
|
+
export function createSubscriberSet(onListenerError) {
|
|
8
|
+
const listeners = new Set();
|
|
9
|
+
return {
|
|
10
|
+
subscribe(listener) {
|
|
11
|
+
listeners.add(listener);
|
|
12
|
+
return () => {
|
|
13
|
+
listeners.delete(listener);
|
|
14
|
+
};
|
|
15
|
+
},
|
|
16
|
+
notify(...args) {
|
|
17
|
+
for (const listener of [...listeners]) {
|
|
18
|
+
try {
|
|
19
|
+
listener(...args);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
try {
|
|
23
|
+
onListenerError?.(error);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// A throwing error handler must not break notification either.
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
get size() {
|
|
32
|
+
return listeners.size;
|
|
33
|
+
},
|
|
34
|
+
clear() {
|
|
35
|
+
listeners.clear();
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@veryfront/ext-content-mdx",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1123",
|
|
4
4
|
"description": "Veryfront first-party extension package for ext-content-mdx",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"veryfront",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"vfile": "6.0.3"
|
|
68
68
|
},
|
|
69
69
|
"peerDependencies": {
|
|
70
|
-
"veryfront": "^0.1.
|
|
70
|
+
"veryfront": "^0.1.1123"
|
|
71
71
|
},
|
|
72
72
|
"type": "module",
|
|
73
73
|
"types": "./esm/extensions/ext-content-mdx/src/index.d.ts",
|