@asymmetric-effort/specifyjs 0.0.6

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 (40) hide show
  1. package/LICENSE +21 -0
  2. package/dist/specifyjs-client.cjs.js +2 -0
  3. package/dist/specifyjs-client.cjs.js.map +1 -0
  4. package/dist/specifyjs-client.d.ts +159 -0
  5. package/dist/specifyjs-client.esm.js +2 -0
  6. package/dist/specifyjs-client.esm.js.map +1 -0
  7. package/dist/specifyjs-components.cjs.js +2 -0
  8. package/dist/specifyjs-components.cjs.js.map +1 -0
  9. package/dist/specifyjs-components.d.ts +2094 -0
  10. package/dist/specifyjs-components.esm.js +2 -0
  11. package/dist/specifyjs-components.esm.js.map +1 -0
  12. package/dist/specifyjs-dom.cjs.js +2 -0
  13. package/dist/specifyjs-dom.cjs.js.map +1 -0
  14. package/dist/specifyjs-dom.d.ts +103 -0
  15. package/dist/specifyjs-dom.esm.js +2 -0
  16. package/dist/specifyjs-dom.esm.js.map +1 -0
  17. package/dist/specifyjs-jsx-dev-runtime.cjs.js +2 -0
  18. package/dist/specifyjs-jsx-dev-runtime.cjs.js.map +1 -0
  19. package/dist/specifyjs-jsx-dev-runtime.esm.js +2 -0
  20. package/dist/specifyjs-jsx-dev-runtime.esm.js.map +1 -0
  21. package/dist/specifyjs-jsx-runtime.cjs.js +2 -0
  22. package/dist/specifyjs-jsx-runtime.cjs.js.map +1 -0
  23. package/dist/specifyjs-jsx-runtime.esm.js +2 -0
  24. package/dist/specifyjs-jsx-runtime.esm.js.map +1 -0
  25. package/dist/specifyjs-server.cjs.js +2 -0
  26. package/dist/specifyjs-server.cjs.js.map +1 -0
  27. package/dist/specifyjs-server.d.ts +132 -0
  28. package/dist/specifyjs-server.esm.js +2 -0
  29. package/dist/specifyjs-server.esm.js.map +1 -0
  30. package/dist/specifyjs-telemetry.cjs.js +2 -0
  31. package/dist/specifyjs-telemetry.cjs.js.map +1 -0
  32. package/dist/specifyjs-telemetry.d.ts +165 -0
  33. package/dist/specifyjs-telemetry.esm.js +2 -0
  34. package/dist/specifyjs-telemetry.esm.js.map +1 -0
  35. package/dist/specifyjs.cjs.js +2 -0
  36. package/dist/specifyjs.cjs.js.map +1 -0
  37. package/dist/specifyjs.d.ts +577 -0
  38. package/dist/specifyjs.esm.js +2 -0
  39. package/dist/specifyjs.esm.js.map +1 -0
  40. package/package.json +113 -0
@@ -0,0 +1,165 @@
1
+ /** 16-byte (32 hex char) trace identifier. */
2
+ type TraceId = string;
3
+ /** 8-byte (16 hex char) span identifier. */
4
+ type SpanId = string;
5
+ /** W3C Trace Context carrier. */
6
+ interface TraceContext {
7
+ traceId: TraceId;
8
+ spanId: SpanId;
9
+ traceFlags: string;
10
+ parentSpanId?: SpanId;
11
+ }
12
+ /** Generate a 32-hex-char trace ID (16 random bytes). */
13
+ declare function generateTraceId(): TraceId;
14
+ /** Generate a 16-hex-char span ID (8 random bytes). */
15
+ declare function generateSpanId(): SpanId;
16
+ /**
17
+ * Parse a W3C `traceparent` header.
18
+ *
19
+ * Format: `{version}-{traceId}-{spanId}-{traceFlags}`
20
+ * Returns `null` when the header is invalid.
21
+ */
22
+ declare function parseTraceparent(header: string): TraceContext | null;
23
+ /**
24
+ * Format a {@link TraceContext} as a W3C `traceparent` header string.
25
+ *
26
+ * Output: `00-{traceId}-{spanId}-{traceFlags}`
27
+ */
28
+ declare function formatTraceparent(ctx: TraceContext): string;
29
+ type SpanKind = 'internal' | 'server' | 'client' | 'producer' | 'consumer';
30
+ interface SpanStatus {
31
+ code: 'unset' | 'ok' | 'error';
32
+ message?: string;
33
+ }
34
+ interface SpanEvent {
35
+ name: string;
36
+ timestamp: number;
37
+ attributes?: Record<string, string | number | boolean>;
38
+ }
39
+ interface Span {
40
+ traceId: TraceId;
41
+ spanId: SpanId;
42
+ parentSpanId?: SpanId;
43
+ name: string;
44
+ kind: SpanKind;
45
+ startTime: number;
46
+ endTime?: number;
47
+ status: SpanStatus;
48
+ attributes: Record<string, string | number | boolean>;
49
+ events: SpanEvent[];
50
+ }
51
+ interface StartSpanOptions {
52
+ kind?: SpanKind;
53
+ parentSpanId?: SpanId;
54
+ traceId?: TraceId;
55
+ attributes?: Record<string, string | number | boolean>;
56
+ }
57
+ /**
58
+ * Create and start a new span. The span is **not** automatically associated
59
+ * with a tracer — use {@link Tracer.startSpan} for automatic parent tracking.
60
+ */
61
+ declare function startSpan(name: string, opts?: StartSpanOptions): Span;
62
+ /** End a span by recording its end time. */
63
+ declare function endSpan(span: Span): void;
64
+ interface TracerConfig {
65
+ serviceName: string;
66
+ serviceVersion?: string;
67
+ endpoint?: string;
68
+ headers?: Record<string, string>;
69
+ batchSize?: number;
70
+ flushInterval?: number;
71
+ }
72
+ interface Tracer {
73
+ /** Create a span, automatically parented to the current active span. */
74
+ startSpan(name: string, opts?: StartSpanOptions): Span;
75
+ /**
76
+ * Execute `fn` with `span` as the active span. The span is automatically
77
+ * ended when `fn` completes (sync or async). The previous active span is
78
+ * restored afterward.
79
+ */
80
+ withSpan<T>(span: Span, fn: () => T): T;
81
+ /** Export all pending (buffered) spans to the configured endpoint. */
82
+ flush(): Promise<void>;
83
+ /** Access the currently-active span (top of the span stack), or `undefined`. */
84
+ activeSpan(): Span | undefined;
85
+ /** Read-only view of the pending span buffer. */
86
+ readonly pendingSpans: ReadonlyArray<Span>;
87
+ /** Tracer configuration. */
88
+ readonly config: Readonly<TracerConfig>;
89
+ }
90
+ declare function createTracer(config: TracerConfig): Tracer;
91
+ /**
92
+ * Hook that creates a span for the component render lifecycle.
93
+ * Auto-starts on mount, records render duration, ends on unmount.
94
+ */
95
+ declare function useTracing(tracer: Tracer, name: string): void;
96
+
97
+ interface DataPoint {
98
+ value: number;
99
+ attributes: Record<string, string | number | boolean>;
100
+ timestamp: number;
101
+ }
102
+ interface Counter {
103
+ readonly name: string;
104
+ readonly description: string;
105
+ /** Monotonically increment the counter. */
106
+ add(value: number, attributes?: Record<string, string | number | boolean>): void;
107
+ /** Read-only snapshot of data points. */
108
+ readonly dataPoints: ReadonlyArray<DataPoint>;
109
+ }
110
+ interface Histogram {
111
+ readonly name: string;
112
+ readonly description: string;
113
+ /** Record a measurement. */
114
+ record(value: number, attributes?: Record<string, string | number | boolean>): void;
115
+ /** Read-only snapshot of data points. */
116
+ readonly dataPoints: ReadonlyArray<DataPoint>;
117
+ }
118
+ interface Gauge {
119
+ readonly name: string;
120
+ readonly description: string;
121
+ /** Set the current value. */
122
+ set(value: number, attributes?: Record<string, string | number | boolean>): void;
123
+ /** Read-only snapshot of data points. */
124
+ readonly dataPoints: ReadonlyArray<DataPoint>;
125
+ }
126
+ type Instrument = Counter | Histogram | Gauge;
127
+ interface InstrumentOptions {
128
+ description?: string;
129
+ unit?: string;
130
+ }
131
+ interface MeterProviderConfig {
132
+ serviceName: string;
133
+ endpoint?: string;
134
+ headers?: Record<string, string>;
135
+ exportInterval?: number;
136
+ }
137
+ interface MeterProvider {
138
+ counter(name: string, opts?: InstrumentOptions): Counter;
139
+ histogram(name: string, opts?: InstrumentOptions): Histogram;
140
+ gauge(name: string, opts?: InstrumentOptions): Gauge;
141
+ /** Export all instrument data to the configured endpoint. */
142
+ flush(): Promise<void>;
143
+ /** Read-only access to all registered instruments. */
144
+ readonly instruments: ReadonlyArray<Instrument>;
145
+ readonly config: Readonly<MeterProviderConfig>;
146
+ }
147
+ declare function createMeterProvider(config: MeterProviderConfig): MeterProvider;
148
+ /**
149
+ * Build an OTLP-compatible JSON payload for metrics.
150
+ *
151
+ * Structure follows the OTLP/HTTP JSON proto mapping:
152
+ * https://opentelemetry.io/docs/specs/otlp/#otlphttp
153
+ */
154
+ declare function formatOtlpMetrics(instruments: ReadonlyArray<Instrument>, serviceName?: string): Record<string, unknown>;
155
+ /**
156
+ * Build an OTLP-compatible JSON payload for traces/spans.
157
+ */
158
+ declare function formatOtlpTraces(spans: ReadonlyArray<Span>, serviceName?: string, serviceVersion?: string): Record<string, unknown>;
159
+ /**
160
+ * Send a JSON payload to an OTLP-compatible endpoint via `fetch`.
161
+ */
162
+ declare function exportToEndpoint(url: string, headers: Record<string, string>, body: Record<string, unknown>): Promise<void>;
163
+
164
+ export { createMeterProvider, createTracer, endSpan, exportToEndpoint, formatOtlpMetrics, formatOtlpTraces, formatTraceparent, generateSpanId, generateTraceId, parseTraceparent, startSpan, useTracing };
165
+ export type { Counter, DataPoint, Gauge, Histogram, Instrument, InstrumentOptions, MeterProvider, MeterProviderConfig, Span, SpanEvent, SpanId, SpanKind, SpanStatus, StartSpanOptions, TraceContext, TraceId, Tracer, TracerConfig };
@@ -0,0 +1,2 @@
1
+ function t(){throw new Error("Invalid hook call. Hooks can only be called inside the body of a function component.")}function e(t){const e=new Uint8Array(t);try{crypto.getRandomValues(e)}catch{for(let n=0;n<t;n++)e[n]=Math.floor(256*Math.random())}return e}function n(t){let e="";for(let n=0;n<t.length;n++)e+=(t[n]??0).toString(16).padStart(2,"0");return e}function r(){return n(e(16))}function a(){return n(e(8))}const o=/^([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})$/;function s(t){const e=o.exec(t.trim());if(!e)return null;const n=e[2],r=e[3],a=e[4];return/^0+$/.test(n)||/^0+$/.test(r)?null:{traceId:n,spanId:r,traceFlags:a}}function i(t){return`00-${t.traceId}-${t.spanId}-${t.traceFlags}`}function c(t,e){return{traceId:e?.traceId??r(),spanId:a(),parentSpanId:e?.parentSpanId,name:t,kind:e?.kind??"internal",startTime:performance.now(),status:{code:"unset"},attributes:e?.attributes?{...e.attributes}:{},events:[]}}function u(t){t.endTime=performance.now()}function p(t){const e=t.batchSize??1e3,n=[],r=[];function a(t){r.length>=e&&r.splice(0,Math.floor(e/2)),r.push(t)}let o;t.flushInterval&&t.flushInterval>0&&(o=setInterval(()=>{s.flush()},t.flushInterval),"object"==typeof o&&"unref"in o&&o.unref());const s={config:t,get pendingSpans(){return r},activeSpan:()=>n.length>0?n[n.length-1]:void 0,startSpan(t,e){const r=s.activeSpan(),a=c(t,{kind:e?.kind,attributes:e?.attributes,traceId:e?.traceId??r?.traceId,parentSpanId:e?.parentSpanId??r?.spanId});return n.push(a),a},withSpan(t,e){n.includes(t)||n.push(t);const r=()=>{for(let e=n.length-1;e>=0;e--)n[e]===t&&n.splice(e,1)};try{const n=e();return n&&"function"==typeof n.then?n.then(e=>(u(t),a(t),r(),e),e=>{throw t.status={code:"error",message:String(e)},u(t),a(t),r(),e}):(u(t),a(t),r(),n)}catch(e){throw t.status={code:"error",message:String(e)},u(t),a(t),r(),e}},async flush(){if(0===r.length)return;const e=r.splice(0,r.length);if(t.endpoint){const{formatOtlpTraces:n,exportToEndpoint:r}=await Promise.resolve().then(function(){return I}),a=n(e,t.serviceName,t.serviceVersion);await r(t.endpoint,t.headers??{},a)}}};return s}function l(e,n){const r=t().useRef(null);var a,o;a=()=>{const t=e.startSpan(n,{kind:"internal"});return t.events.push({name:"mount",timestamp:performance.now()}),r.current=t,()=>{r.current&&(r.current.events.push({name:"unmount",timestamp:performance.now()}),u(r.current))}},o=[],t().useEffect(a,o)}function d(t,e,n){t.length>=1e4&&t.splice(0,Math.floor(5e3)),t.push({value:e,attributes:n?{...n}:{},timestamp:performance.now()})}function f(t){const e=[];let n;t.exportInterval&&t.exportInterval>0&&(n=setInterval(()=>{r.flush()},t.exportInterval),"object"==typeof n&&"unref"in n&&n.unref());const r={config:t,get instruments(){return e},counter(t,n){const r=function(t,e){const n=[];return{name:t,description:e?.description??"",add(t,e){t<0||d(n,t,e)},get dataPoints(){return n}}}(t,n);return e.push(r),r},histogram(t,n){const r=function(t,e){const n=[];return{name:t,description:e?.description??"",record(t,e){d(n,t,e)},get dataPoints(){return n}}}(t,n);return e.push(r),r},gauge(t,n){const r=function(t,e){const n=[];return{name:t,description:e?.description??"",set(t,e){d(n,t,e)},get dataPoints(){return n}}}(t,n);return e.push(r),r},async flush(){if(!t.endpoint)return;const n=g(e,t.serviceName);await y(t.endpoint,t.headers??{},n)}};return r}function m(t){return Object.entries(t).map(([t,e])=>"string"==typeof e?{key:t,value:{stringValue:e}}:"boolean"==typeof e?{key:t,value:{boolValue:e}}:{key:t,value:{intValue:e}})}function h(t){return String(Math.round(1e6*t))}function g(t,e){const n=t.map(t=>{const e=t.dataPoints.map(t=>({attributes:m(t.attributes),timeUnixNano:h(t.timestamp),asDouble:t.value}));let n;return n="add"in t?{sum:{dataPoints:e,isMonotonic:!0,aggregationTemporality:2}}:"record"in t?{histogram:{dataPoints:e,aggregationTemporality:2}}:{gauge:{dataPoints:e}},{name:t.name,description:t.description,...n}});return{resourceMetrics:[{resource:{attributes:m({"service.name":e??"unknown"})},scopeMetrics:[{scope:{name:"specifyjs-telemetry",version:"1.0.0"},metrics:n}]}]}}function v(t,e,n){const r={"service.name":e??"unknown"};n&&(r["service.version"]=n);const a={internal:1,server:2,client:3,producer:4,consumer:5},o={unset:0,ok:1,error:2},s=t.map(t=>({traceId:t.traceId,spanId:t.spanId,parentSpanId:t.parentSpanId??"",name:t.name,kind:a[t.kind]??1,startTimeUnixNano:h(t.startTime),endTimeUnixNano:void 0!==t.endTime?h(t.endTime):"0",attributes:m(t.attributes),status:{code:o[t.status.code]??0,message:t.status.message??""},events:t.events.map(t=>({name:t.name,timeUnixNano:h(t.timestamp),attributes:t.attributes?m(t.attributes):[]}))}));return{resourceSpans:[{resource:{attributes:m(r)},scopeSpans:[{scope:{name:"specifyjs-telemetry",version:"1.0.0"},spans:s}]}]}}async function y(t,e,n){try{!function(t){if(t.startsWith("//"))throw new Error(`[SpecifyJS] Protocol-relative URL rejected: "${t}". Use an explicit https:// prefix.`);if(t.startsWith("/")||t.startsWith("./")||t.startsWith("../"))return;if(t.startsWith("data:"))return;let e;try{e=new URL(t,"undefined"!=typeof window?window.location.href:void 0)}catch{return}if("https:"!==e.protocol&&"localhost"!==e.hostname&&"127.0.0.1"!==e.hostname)throw new Error(`[SpecifyJS] Insecure URL rejected: "${t}". SpecifyJS enforces HTTPS-only for all network requests. Use https:// or a relative URL. Localhost URLs are allowed for development.`)}(t),await fetch(t,{method:"POST",headers:{"Content-Type":"application/json",...e},body:JSON.stringify(n)})}catch{}}var I=Object.freeze({__proto__:null,createMeterProvider:f,exportToEndpoint:y,formatOtlpMetrics:g,formatOtlpTraces:v});export{f as createMeterProvider,p as createTracer,u as endSpan,y as exportToEndpoint,g as formatOtlpMetrics,v as formatOtlpTraces,i as formatTraceparent,a as generateSpanId,r as generateTraceId,s as parseTraceparent,c as startSpan,l as useTracing};
2
+ //# sourceMappingURL=specifyjs-telemetry.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specifyjs-telemetry.esm.js","sources":["../../src/hooks/index.ts","../../src/telemetry/tracing.ts","../../src/telemetry/metrics.ts","../../src/shared/secure-fetch.ts"],"sourcesContent":[null,null,null,null],"names":["resolveDispatcher","Error","randomBytes","length","buf","Uint8Array","crypto","getRandomValues","i","Math","floor","random","bytesToHex","bytes","hex","toString","padStart","generateTraceId","generateSpanId","TRACEPARENT_RE","parseTraceparent","header","match","exec","trim","traceId","spanId","traceFlags","test","formatTraceparent","ctx","startSpan","name","opts","parentSpanId","kind","startTime","performance","now","status","code","attributes","events","endSpan","span","endTime","createTracer","config","MAX_BUFFER_SIZE","batchSize","spanStack","buffer","bufferSpan","splice","push","flushTimer","flushInterval","setInterval","tracer","flush","unref","pendingSpans","activeSpan","undefined","active","withSpan","fn","includes","removeFromStack","result","then","value","err","message","String","toExport","endpoint","formatOtlpTraces","exportToEndpoint","Promise","resolve","metrics","body","serviceName","serviceVersion","headers","useTracing","spanRef","useRef","create","deps","timestamp","current","useEffect","addDataPoint","points","MAX_DATA_POINTS","createMeterProvider","instruments","exportTimer","exportInterval","provider","counter","c","description","add","dataPoints","createCounter","histogram","h","record","createHistogram","gauge","g","set","createGauge","formatOtlpMetrics","toOtlpAttributes","attrs","Object","entries","map","key","val","stringValue","boolValue","intValue","toNanos","ms","round","inst","dp","timeUnixNano","asDouble","metricData","sum","isMonotonic","aggregationTemporality","resourceMetrics","resource","scopeMetrics","scope","version","spans","resourceAttrs","SPAN_KIND_MAP","internal","server","client","producer","consumer","STATUS_CODE_MAP","unset","ok","error","otlpSpans","s","startTimeUnixNano","endTimeUnixNano","e","resourceSpans","scopeSpans","async","url","startsWith","parsed","URL","window","location","href","protocol","hostname","assertSecureUrl","fetch","method","JSON","stringify"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";const e=Symbol.for("spec.element"),t=Symbol.for("spec.fragment"),n=Symbol.for("spec.provider"),o=Symbol.for("spec.consumer"),r=Symbol.for("spec.forward_ref"),s=Symbol.for("spec.memo"),a=Symbol.for("spec.lazy"),c=Symbol.for("spec.suspense"),u=Symbol.for("spec.strict_mode"),i=Symbol.for("spec.profiler");function l(t,n,...o){let r=null,s=null;const a={};if(null!=n){void 0!==n.key&&(r=""+n.key),void 0!==n.ref&&(s=n.ref);for(const e in n)Object.prototype.hasOwnProperty.call(n,e)&&"key"!==e&&"ref"!==e&&"__proto__"!==e&&"constructor"!==e&&"prototype"!==e&&(a[e]=n[e])}if(1===o.length?a.children=o[0]:o.length>1&&(a.children=o),"function"==typeof t&&t.defaultProps){const e=t.defaultProps;for(const t of Object.keys(e))"__proto__"!==t&&"constructor"!==t&&void 0===a[t]&&(a[t]=e[t])}return{$$typeof:e,type:t,props:a,key:r,ref:s}}const p=t;function f(e){const t={$$typeof:Symbol.for("spec.context"),Provider:null,Consumer:null,_currentValue:e,_defaultValue:e},r={$$typeof:n,_context:t},s={$$typeof:o,_context:t};return t.Provider=r,t.Consumer=s,t}function h(t){return"object"==typeof t&&null!==t&&t.$$typeof===e}function d(e){const t=[],n=[e];for(;n.length>0;){const e=n.pop();if(Array.isArray(e))for(let t=e.length-1;t>=0;t--)n.push(e[t]);else t.push(e)}return t}const m={map:function(e,t){const n=d(e),o=[];for(let e=0;e<n.length;e++){const r=n[e];null!=r&&"boolean"!=typeof r&&o.push(t(r,e))}return o},forEach:function(e,t){const n=d(e);let o=0;for(const e of n)null!=e&&"boolean"!=typeof e&&t(e,o++)},count:function(e){const t=d(e);let n=0;for(const e of t)null!=e&&"boolean"!=typeof e&&n++;return n},only:function(e){if(!h(e))throw new Error("Children.only: expected a single SpecifyJS element child");return e},toArray:function(e){return d(e).filter(e=>null!=e&&"boolean"!=typeof e)}};class y{constructor(e){this._fiber=null,this._pendingState=[],this._forceUpdate=!1,this.props=e,this.state={},this.context=void 0}setState(e,t){this._pendingState.push(e),this._enqueueUpdate(t)}forceUpdate(e){this._forceUpdate=!0,this._enqueueUpdate(e)}render(){return null}_enqueueUpdate(e){}}y.prototype.isSpecComponent=!0;class x extends y{shouldComponentUpdate(e,t){return!w(this.props,e)||!w(this.state,t)}}function w(e,t){if(Object.is(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;const n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;const r=e,s=t;for(const e of n)if(!Object.prototype.hasOwnProperty.call(s,e)||!Object.is(r[e],s[e]))return!1;return!0}function g(e){return e.replace(/["\\]/g,"\\$&")}function b(e,t,n){const o=`meta[${e}="${g(t)}"]`;let r=document.querySelector(o);const s=null!==r,a=r?.content;return r||(r=document.createElement("meta"),r.setAttribute(e,t),document.head.appendChild(r)),r.content=n,()=>{s&&void 0!==a?r.content=a:s||r.remove()}}function v(e,t){const n=`meta[http-equiv="${g(e)}"]`;let o=document.querySelector(n);const r=null!==o,s=o?.content;return o||(o=document.createElement("meta"),o.setAttribute("http-equiv",e),document.head.appendChild(o)),o.content=t,()=>{r&&void 0!==s?o.content=s:r||o.remove()}}function _(){throw new Error("Invalid hook call. Hooks can only be called inside the body of a function component.")}function S(e){return _().useState(e)}function E(e,t){return _().useEffect(e,t)}function C(e){return _().useContext(e)}function k(e,t){return _().useCallback(e,t)}function $(e,t){return _().useMemo(e,t)}x.prototype.isPureSpecComponent=!0;const P=c,j=u,O=i,R=f({pathname:"/",params:{},navigate:()=>{throw new Error("useNavigate must be used inside a <Router> component.")},basePath:""});function U(){const e=("undefined"!=typeof window?window.location.hash:"").replace(/^#\/?/,"/");return""===e?"/":e}let I={pathname:U(),hash:"undefined"!=typeof window?window.location.hash:""};const L=new Set;function F(){I={pathname:U(),hash:"undefined"!=typeof window?window.location.hash:""};for(const e of L)e()}function q(){return I}function N(e){let t=e.length;for(;t>1&&47===e.charCodeAt(t-1);)t--;return t===e.length?e:e.slice(0,t)}function T(e,t,n){const o=n?.exact??!1,r="/"===e?"/":N(e),s="/"===t?"/":N(t);if("/"===r){const t="/"===s;return o&&!t?null:{params:{},isExact:t,path:e,url:"/"}}const a=r.split("/").filter(Boolean),c=s.split("/").filter(Boolean),u="*"===a[a.length-1];if(!u&&o&&c.length!==a.length)return null;if(!u&&c.length<a.length)return null;const i={},l=[];for(let t=0;t<a.length;t++){const n=a[t];if("*"===n){const n=c.slice(t).join("/");return i["*"]=n,{params:i,isExact:!0,path:e,url:"/"+c.join("/")}}if(t>=c.length)return null;const o=c[t];if(n.startsWith(":"))i[n.slice(1)]=decodeURIComponent(o),l.push(o);else{if(n.toLowerCase()!==o.toLowerCase())return null;l.push(o)}}const p="/"+l.join("/"),f=c.length===a.length;return o&&!f?null:{params:i,isExact:f,path:e,url:p}}"undefined"!=typeof window&&window.addEventListener("hashchange",F);let D=[],V=[];function W(){const e=V;V=[];for(const t of e)t()}function A(e){if(e.startsWith("//"))throw new Error(`[SpecifyJS] Protocol-relative URL rejected: "${e}". Use an explicit https:// prefix.`);if(e.startsWith("/")||e.startsWith("./")||e.startsWith("../"))return;if(e.startsWith("data:"))return;let t;try{t=new URL(e,"undefined"!=typeof window?window.location.href:void 0)}catch{return}if("https:"!==t.protocol&&"localhost"!==t.hostname&&"127.0.0.1"!==t.hostname)throw new Error(`[SpecifyJS] Insecure URL rejected: "${e}". SpecifyJS enforces HTTPS-only for all network requests. Use https:// or a relative URL. Localhost URLs are allowed for development.`)}function H(e,t){return A("string"==typeof e?e:e instanceof URL?e.href:e.url),fetch(e,t)}const J=new Map,M=f({flags:{},isEnabled:()=>!1,setFlag:()=>{},loading:!1});exports.Children=m,exports.Component=y,exports.ErrorBoundary=class extends y{static getDerivedStateFromError(e){return{hasError:!0,error:e}}constructor(e){super(e),this.state={hasError:!1,error:null}}componentDidCatch(e,t){this.props.onError?.(e,t)}render(){return this.state.hasError?this.props.fallback??null:this.props.children??null}},exports.FeatureFlagProvider=function(e){const[t,n]=S(()=>({...e.defaults})),[o,r]=S(!!e.url);E(()=>{if(!e.url)return;let t=!1;return r(!0),H(e.url).then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}`);return e.json()}).then(e=>{if(!t&&"object"==typeof e&&null!==e){const t={};for(const n of Object.keys(e))"__proto__"!==n&&"constructor"!==n&&"prototype"!==n&&(t[n]=!0===e[n]);n(e=>({...e,...t}))}t||r(!1)}).catch(()=>{t||r(!1)}),()=>{t=!0}},[e.url]);const s=k((...e)=>{const n=e[0];return!0===t[n]},[t]),a=k((...e)=>{const t=e[0],o=e[1];n(e=>({...e,[t]:o}))},[]),c={flags:t,isEnabled:s,setFlag:a,loading:o};return l(M.Provider,{value:c},e.children)},exports.FeatureGate=function(e){const{isEnabled:t}=C(M);return t(e.flag)?e.children:e.fallback??null},exports.Fragment=p,exports.Link=function(e){const{to:t,className:n,activeClassName:o,exact:r,children:s,...a}=e,c=C(R),u=null!==T(t,c.pathname,{exact:r??!1}),i=k((...e)=>{e[0].preventDefault(),c.navigate(t)},[t,c.navigate]),p=[n,u?o:null].filter(Boolean).join(" ")||void 0;return l("a",{...a,href:"#"+t,onClick:i,className:p},s)},exports.Profiler=O,exports.PureComponent=x,exports.Route=function(e){const t=C(R),n=T(t.basePath+e.path,t.pathname,{exact:e.exact??!1}),o=$(()=>({pathname:t.pathname,params:{...t.params,...n?n.params:{}},navigate:t.navigate,basePath:n?n.url:t.basePath}),[t.pathname,t.navigate,t.params,t.basePath,n]);if(!n)return null;for(const e of Object.keys(t.params))e in o.params||(o.params[e]=t.params[e]);const r=e.component?l(e.component,{...o.params}):e.children;return l(R.Provider,{value:o},r)},exports.Router=function(e){const[t,n]=S(()=>q().pathname);E(()=>{var e;return n(q().pathname),e=()=>{n(q().pathname)},L.add(e),()=>{L.delete(e)}},[]);const o=k((...e)=>{!function(e,t){const n=e.startsWith("#")?e:"#"+e;if(t?.replace){const e=window.location.pathname+window.location.search+n;window.history.replaceState(null,"",e)}else window.location.hash=n;F()}(e[0],e[1])},[]),r=$(()=>({pathname:t,params:{},navigate:o,basePath:""}),[t,o]);return l(R.Provider,{value:r},e.children)},exports.StrictMode=j,exports.Suspense=P,exports.act=function(e){const t=e();W(),t&&"function"==typeof t.then&&t.then(()=>{W()})},exports.assertSecureUrl=A,exports.cloneElement=function(t,n,...o){if(!h(t))throw new Error("cloneElement: argument must be a valid SpecifyJS element");let r=t.key,s=t.ref;const a={...t.props};if(null!=n){void 0!==n.key&&(r=""+n.key),void 0!==n.ref&&(s=n.ref);for(const e in n)Object.prototype.hasOwnProperty.call(n,e)&&"key"!==e&&"ref"!==e&&"__proto__"!==e&&"constructor"!==e&&"prototype"!==e&&(a[e]=n[e])}return 1===o.length?a.children=o[0]:o.length>1&&(a.children=o),{$$typeof:e,type:t.type,props:a,key:r,ref:s}},exports.createContext=f,exports.createElement=l,exports.createFactory=function(e){return(t,...n)=>l(e,t??null,...n)},exports.createRef=function(){return{current:null}},exports.forwardRef=function(e){return{$$typeof:r,render:e,displayName:e.displayName||e.name||"ForwardRef"}},exports.getComponentTypeTable=function(){return J},exports.h=l,exports.isValidElement=h,exports.lazy=function(e){const t={_status:"pending",_result:void 0};return{$$typeof:a,_payload:t,_init:()=>{if("resolved"===t._status)return t._result;if("rejected"===t._status)throw t._result;const n=e();throw t._status="pending",n.then(e=>{t._status="resolved",t._result=e.default},e=>{t._status="rejected",t._result=e}),n},displayName:"Lazy"}},exports.matchPath=T,exports.memo=function(e,t){return{$$typeof:s,type:e,compare:t||null,displayName:e.displayName||e.name||"Memo"}},exports.resolveComponentId=function(e){const t=e.match(/^s-(\d+)-(\d+)$/);if(!t||!t[1]||!t[2])return null;const n=parseInt(t[1],10),o=parseInt(t[2],10);for(const e of J.values())if(e.index===n)return{typeName:e.name,typeIndex:n,instanceId:o};return null},exports.secureFetch=H,exports.setComponentIdsEnabled=function(e){},exports.startTransition=function(e){try{e()}finally{!function(){const e=D;D=[];for(const t of e)t()}()}},exports.useCallback=k,exports.useContext=C,exports.useDebugValue=function(e,t){return _().useDebugValue(e,t)},exports.useDeferredValue=function(e){return _().useDeferredValue(e)},exports.useEffect=E,exports.useFeatureFlags=function(){return C(M)},exports.useHead=function(e){E(()=>{const t=[],n=document.title;if(e.title&&(document.title=e.title,t.push(()=>{document.title=n})),e.description&&t.push(b("name","description",e.description)),e.keywords&&t.push(b("name","keywords",e.keywords)),e.author&&t.push(b("name","author",e.author)),e.canonical){const n=document.createElement("link");n.rel="canonical",n.href=e.canonical,document.head.appendChild(n),t.push(()=>n.remove())}if(e.og)for(const[n,o]of Object.entries(e.og))t.push(b("property",`og:${n}`,o));if(e.twitter)for(const[n,o]of Object.entries(e.twitter))t.push(b("name",`twitter:${n}`,o));if(e.httpEquiv){const n={csp:"Content-Security-Policy",referrer:"Referrer-Policy",contentType:"X-Content-Type-Options",frameOptions:"X-Frame-Options",cacheControl:"Cache-Control"};for(const[o,r]of Object.entries(e.httpEquiv)){if(void 0===r)continue;const e=n[o]??o;t.push(v(e,r))}}if(e.meta)for(const n of e.meta)n.name?t.push(b("name",n.name,n.content)):n.property&&t.push(b("property",n.property,n.content));return()=>{for(const e of t)e()}},[e.title,e.description,e.keywords,e.author,e.canonical,e.og,e.twitter,e.httpEquiv,e.meta])},exports.useId=function(){return _().useId()},exports.useImperativeHandle=function(e,t,n){return _().useImperativeHandle(e,t,n)},exports.useInsertionEffect=function(e,t){return _().useInsertionEffect(e,t)},exports.useLayoutEffect=function(e,t){return _().useLayoutEffect(e,t)},exports.useMemo=$,exports.useNavigate=function(){return C(R).navigate},exports.useParams=function(){return C(R).params},exports.useReducer=function(e,t,n){return _().useReducer(e,t,n)},exports.useRef=function(e){return _().useRef(e)},exports.useRouter=function(){return C(R)},exports.useState=S,exports.useSyncExternalStore=function(e,t,n){return _().useSyncExternalStore(e,t,n)},exports.useTransition=function(){return _().useTransition()};
2
+ //# sourceMappingURL=specifyjs.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specifyjs.cjs.js","sources":["../../src/shared/types.ts","../../src/core/create-element.ts","../../src/core/fragment.ts","../../src/context/create-context.ts","../../src/core/is-valid-element.ts","../../src/core/children.ts","../../src/components/component.ts","../../src/hooks/use-head.ts","../../src/hooks/index.ts","../../src/components/suspense.ts","../../src/components/strict-mode.ts","../../src/components/profiler.ts","../../src/router/router-context.ts","../../src/router/router-store.ts","../../src/router/match-path.ts","../../src/core/transitions.ts","../../src/core/scheduler.ts","../../src/shared/secure-fetch.ts","../../src/shared/component-registry.ts","../../src/features/feature-flags.ts","../../src/components/error-boundary.ts","../../src/router/link-component.ts","../../src/router/route-component.ts","../../src/router/router-component.ts","../../src/shared/act.ts","../../src/core/clone-element.ts","../../src/core/create-ref.ts","../../src/core/forward-ref.ts","../../src/core/lazy.ts","../../src/core/memo.ts","../../src/router/use-navigate.ts","../../src/router/use-params.ts","../../src/router/use-router.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["SPEC_ELEMENT_TYPE","Symbol","for","SPEC_FRAGMENT_TYPE","SPEC_PROVIDER_TYPE","SPEC_CONSUMER_TYPE","SPEC_FORWARD_REF_TYPE","SPEC_MEMO_TYPE","SPEC_LAZY_TYPE","SPEC_SUSPENSE_TYPE","SPEC_STRICT_MODE_TYPE","SPEC_PROFILER_TYPE","createElement","type","config","children","key","ref","props","undefined","propName","Object","prototype","hasOwnProperty","call","length","defaultProps","keys","$$typeof","Fragment","createContext","defaultValue","context","Provider","Consumer","_currentValue","_defaultValue","provider","_context","consumer","isValidElement","object","flattenChildren","result","stack","node","pop","Array","isArray","i","push","Children","map","fn","flat","child","forEach","index","count","only","Error","toArray","filter","Component","constructor","this","_fiber","_pendingState","_forceUpdate","state","setState","updater","callback","_enqueueUpdate","forceUpdate","render","_callback","isSpecComponent","PureComponent","shouldComponentUpdate","nextProps","nextState","shallowEqual","a","b","is","keysA","keysB","objA","objB","escapeCssAttr","s","replace","setMeta","attr","content","selector","el","document","querySelector","existed","prevContent","setAttribute","head","appendChild","remove","setHttpEquivMeta","httpEquiv","resolveDispatcher","useState","initialState","useEffect","create","deps","useContext","useCallback","useMemo","factory","isPureSpecComponent","Suspense","StrictMode","Profiler","RouterContext","pathname","params","navigate","basePath","getHashPath","path","window","location","hash","currentSnapshot","listeners","Set","emitChange","listener","getSnapshot","stripTrailingSlashes","end","charCodeAt","slice","matchPath","pattern","options","exact","normalizedPattern","normalizedPath","isExact","url","patternSegments","split","Boolean","pathSegments","hasWildcard","matchedSegments","patternSeg","remaining","join","pathSeg","startsWith","decodeURIComponent","toLowerCase","matchedUrl","addEventListener","transitionCallbacks","pendingTasks","flushPendingTasks","tasks","task","assertSecureUrl","parsed","URL","href","protocol","hostname","secureFetch","input","init","fetch","typeMap","Map","FeatureFlagContext","flags","isEnabled","setFlag","loading","getDerivedStateFromError","error","hasError","super","componentDidCatch","info","onError","fallback","setFlags","defaults","setLoading","cancelled","then","res","ok","status","json","safe","k","prev","catch","args","flag","enabled","value","to","className","activeClassName","rest","router","isActive","handleClick","preventDefault","cls","onClick","match","nestedValue","component","setPathname","add","delete","nav","hashPath","search","history","replaceState","element","current","displayName","name","payload","_status","_result","_payload","_init","promise","module","default","compare","id","typeIndex","parseInt","instanceId","entry","values","typeName","callbacks","cb","flushTransitions","format","useDebugValue","useDeferredValue","cleanup","prevTitle","title","description","keywords","author","canonical","link","rel","og","entries","twitter","httpEquivMap","csp","referrer","contentType","frameOptions","cacheControl","httpEquivName","meta","tag","property","useId","createHandle","useImperativeHandle","useInsertionEffect","useLayoutEffect","reducer","initialArg","useReducer","initialValue","useRef","subscribe","getServerSnapshot","useSyncExternalStore","useTransition"],"mappings":"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"}