@1sat/types 0.0.39 → 0.0.41
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/dist/constants.d.ts +113 -149
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +225 -212
- package/dist/constants.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/intentLabel.test.js +54 -11
- package/dist/intentLabel.test.js.map +1 -1
- package/dist/ordinalTags.d.ts +23 -28
- package/dist/ordinalTags.d.ts.map +1 -1
- package/dist/ordinalTags.js +94 -40
- package/dist/ordinalTags.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2GH,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACpB,4BAAe,CAAA;IACf,4BAAe,CAAA;AAChB,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAED,MAAM,CAAN,IAAY,sBAKX;AALD,WAAY,sBAAsB;IACjC,oDAA0B,CAAA;IAC1B,kDAAwB,CAAA;IACxB,gDAAsB,CAAA;IACtB,2CAAiB,CAAA;AAClB,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,QAKjC;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACzB,6BAAW,CAAA;IACX,mCAAiB,CAAA;AAClB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAiID,qEAAqE;AACrE,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACvB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;AAClB,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAkTD,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2GH,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACpB,4BAAe,CAAA;IACf,4BAAe,CAAA;AAChB,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB;AAED,MAAM,CAAN,IAAY,sBAKX;AALD,WAAY,sBAAsB;IACjC,oDAA0B,CAAA;IAC1B,kDAAwB,CAAA;IACxB,gDAAsB,CAAA;IACtB,2CAAiB,CAAA;AAClB,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,QAKjC;AAED,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACzB,6BAAW,CAAA;IACX,mCAAiB,CAAA;AAClB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAiID,qEAAqE;AACrE,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACvB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;AAClB,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAkTD,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA"}
|
package/dist/intentLabel.test.js
CHANGED
|
@@ -1,16 +1,59 @@
|
|
|
1
1
|
import { describe, expect, test } from 'bun:test';
|
|
2
|
-
import {
|
|
3
|
-
describe('
|
|
4
|
-
test('
|
|
5
|
-
|
|
6
|
-
expect(
|
|
7
|
-
expect(
|
|
2
|
+
import { P1SAT_LABEL, buildActionDispatchLabel, buildExternalInputLabel, buildInputAssetLabel, ensureSchemeActionLabel, hasAssetDispatchLabel, hasSchemeDispatchLabel, parseInputAssetLabels, parseOneInputLabel, } from './constants.js';
|
|
3
|
+
describe('scheme dispatch labels', () => {
|
|
4
|
+
test('buildActionDispatchLabel', () => {
|
|
5
|
+
expect(buildActionDispatchLabel('1sat')).toBe('p 1sat action');
|
|
6
|
+
expect(buildActionDispatchLabel('opns')).toBe('p opns action');
|
|
7
|
+
expect(P1SAT_LABEL).toBe('p 1sat action');
|
|
8
8
|
});
|
|
9
|
-
test('
|
|
10
|
-
expect(
|
|
11
|
-
expect(
|
|
12
|
-
expect(
|
|
13
|
-
expect(
|
|
9
|
+
test('hasSchemeDispatchLabel / hasAssetDispatchLabel', () => {
|
|
10
|
+
expect(hasSchemeDispatchLabel([P1SAT_LABEL], '1sat')).toBe(true);
|
|
11
|
+
expect(hasSchemeDispatchLabel(['p opns input id abc'], 'opns')).toBe(true);
|
|
12
|
+
expect(hasSchemeDispatchLabel(['p opns input id abc'], '1sat')).toBe(false);
|
|
13
|
+
expect(hasAssetDispatchLabel(['p bsv21 action'])).toBe(true);
|
|
14
|
+
expect(hasAssetDispatchLabel(['p 1sat'])).toBe(false);
|
|
15
|
+
expect(hasAssetDispatchLabel(undefined)).toBe(false);
|
|
16
|
+
});
|
|
17
|
+
test('ensureSchemeActionLabel', () => {
|
|
18
|
+
expect(ensureSchemeActionLabel(undefined, '1sat')).toEqual([P1SAT_LABEL]);
|
|
19
|
+
expect(ensureSchemeActionLabel(['other'], 'opns')).toEqual([
|
|
20
|
+
'other',
|
|
21
|
+
'p opns action',
|
|
22
|
+
]);
|
|
23
|
+
expect(ensureSchemeActionLabel([P1SAT_LABEL], '1sat')).toEqual([
|
|
24
|
+
P1SAT_LABEL,
|
|
25
|
+
]);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
describe('input labels', () => {
|
|
29
|
+
test('held: p <scheme> input id <key>', () => {
|
|
30
|
+
const label = buildInputAssetLabel('1sat', 'id1');
|
|
31
|
+
expect(label).toBe('p 1sat input id id1');
|
|
32
|
+
expect(parseInputAssetLabels([label])).toEqual([
|
|
33
|
+
{ scheme: '1sat', basket: '1sat', id: 'id1' },
|
|
34
|
+
]);
|
|
35
|
+
});
|
|
36
|
+
test('opns / bsv21', () => {
|
|
37
|
+
expect(buildInputAssetLabel('opns', 'abc')).toBe('p opns input id abc');
|
|
38
|
+
expect(buildInputAssetLabel('bsv21', 'tok')).toBe('p bsv21 input id tok');
|
|
39
|
+
expect(parseInputAssetLabels(['p opns input id abc'])).toEqual([
|
|
40
|
+
{ scheme: 'opns', basket: 'opns', id: 'abc' },
|
|
41
|
+
]);
|
|
42
|
+
});
|
|
43
|
+
test('rejects legacy basket-middle and bare-key forms', () => {
|
|
44
|
+
expect(parseOneInputLabel('p 1sat input opns oldid')).toBeUndefined();
|
|
45
|
+
expect(parseOneInputLabel('p 1sat input barekey')).toBeUndefined();
|
|
46
|
+
expect(parseInputAssetLabels(['p 1sat input opns oldid'])).toEqual([]);
|
|
47
|
+
});
|
|
48
|
+
test('external: p <scheme> input <outpoint>', () => {
|
|
49
|
+
const op = `${'aa'.repeat(32)}.0`;
|
|
50
|
+
const label = buildExternalInputLabel('1sat', op);
|
|
51
|
+
expect(label).toBe(`p 1sat input ${op}`);
|
|
52
|
+
expect(parseOneInputLabel(label)).toEqual({
|
|
53
|
+
kind: 'outpoint',
|
|
54
|
+
scheme: '1sat',
|
|
55
|
+
outpoint: op,
|
|
56
|
+
});
|
|
14
57
|
});
|
|
15
58
|
});
|
|
16
59
|
//# sourceMappingURL=intentLabel.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intentLabel.test.js","sourceRoot":"","sources":["../src/intentLabel.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EACN,
|
|
1
|
+
{"version":3,"file":"intentLabel.test.js","sourceRoot":"","sources":["../src/intentLabel.test.ts"],"names":[],"mappings":"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"}
|
package/dist/ordinalTags.d.ts
CHANGED
|
@@ -1,38 +1,33 @@
|
|
|
1
|
-
import type { OrdfsMetadata } from './services';
|
|
2
|
-
/** Longest
|
|
1
|
+
import type { OrdfsMetadata } from './services.js';
|
|
2
|
+
/** Longest display name we put in customInstructions (not tags). */
|
|
3
3
|
export declare const MAX_NAME_TAG_LENGTH = 64;
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* Emits:
|
|
16
|
-
* - `origin:<outpoint>` — the resolved genesis. **Omitted entirely when
|
|
17
|
-
* unknown**; an empty `origin:` reads as a resolved value and is never
|
|
18
|
-
* correct. The bare `origin` marker is a separate thing, set only on the
|
|
19
|
-
* inscription transaction itself, where the output cannot know its own
|
|
20
|
-
* outpoint.
|
|
21
|
-
* - `type:<category>` **and** `type:<base>` — hierarchical, so callers can
|
|
22
|
-
* query broadly (`type:image`) or exactly (`type:image/png`).
|
|
23
|
-
* - `name:<name>` — from MAP `name`, else `subTypeData.name`, truncated.
|
|
5
|
+
* Ordinals / indexer outpoint form: `txid_vout`.
|
|
6
|
+
* Accepts dotted (BRC-100) or underscore input. Used for origin tags, CI
|
|
7
|
+
* origin, BSV21 tokenId-style ids, and OrdFS keys.
|
|
8
|
+
*/
|
|
9
|
+
export declare function formatOrdinalOutpoint(outpoint: string): string;
|
|
10
|
+
/** @deprecated Use {@link formatOrdinalOutpoint} */
|
|
11
|
+
export declare const formatOriginOutpoint: typeof formatOrdinalOutpoint;
|
|
12
|
+
/**
|
|
13
|
+
* Canonical identity tags for an ordinal (BRC-147).
|
|
24
14
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
15
|
+
* Emits filter tags (lowercase-safe). Does **not** emit `name:` (→ CI `name`).
|
|
16
|
+
* Bare `origin` is only for the mint out itself (caller stamps that).
|
|
27
17
|
*/
|
|
28
18
|
export declare function ordinalTagsFromMetadata(metadata: Partial<OrdfsMetadata> | undefined, fallbackOrigin?: string): string[];
|
|
29
19
|
/**
|
|
30
|
-
*
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
20
|
+
* Single `type:<mime>` tag. Strips `;…` parameters. No category dual-tag.
|
|
21
|
+
*/
|
|
22
|
+
export declare function contentTypeTag(contentType: string | undefined): string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* @deprecated Use {@link contentTypeTag}. Returns 0–1 tags for spread compat.
|
|
34
25
|
*/
|
|
35
26
|
export declare function contentTypeTags(contentType: string | undefined): string[];
|
|
36
|
-
/** MAP
|
|
27
|
+
/** Parse MAP `subTypeData` (object or JSON string). */
|
|
28
|
+
export declare function parseMapSubTypeData(map: Record<string, unknown> | undefined): Record<string, unknown> | undefined;
|
|
29
|
+
/** MAP name, falling back to `subTypeData.name`. For CI `name`, not tags. */
|
|
37
30
|
export declare function nameFromMap(map: Record<string, unknown> | undefined): string | undefined;
|
|
31
|
+
/** Truncate display name for CI. */
|
|
32
|
+
export declare function displayNameForCi(name: string | undefined): string | undefined;
|
|
38
33
|
//# sourceMappingURL=ordinalTags.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ordinalTags.d.ts","sourceRoot":"","sources":["../src/ordinalTags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ordinalTags.d.ts","sourceRoot":"","sources":["../src/ordinalTags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD,oEAAoE;AACpE,eAAO,MAAM,mBAAmB,KAAK,CAAA;AAErC;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAW9D;AAED,oDAAoD;AACpD,eAAO,MAAM,oBAAoB,8BAAwB,CAAA;AAEzD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACtC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,EAC5C,cAAc,CAAC,EAAE,MAAM,GACrB,MAAM,EAAE,CAuCV;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC7B,WAAW,EAAE,MAAM,GAAG,SAAS,GAC7B,MAAM,GAAG,SAAS,CAIpB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAGzE;AAED,uDAAuD;AACvD,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACtC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAiBrC;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACtC,MAAM,GAAG,SAAS,CAOpB;AAED,oCAAoC;AACpC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG7E"}
|
package/dist/ordinalTags.js
CHANGED
|
@@ -1,64 +1,118 @@
|
|
|
1
|
-
/** Longest
|
|
1
|
+
/** Longest display name we put in customInstructions (not tags). */
|
|
2
2
|
export const MAX_NAME_TAG_LENGTH = 64;
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
4
|
+
* Ordinals / indexer outpoint form: `txid_vout`.
|
|
5
|
+
* Accepts dotted (BRC-100) or underscore input. Used for origin tags, CI
|
|
6
|
+
* origin, BSV21 tokenId-style ids, and OrdFS keys.
|
|
7
|
+
*/
|
|
8
|
+
export function formatOrdinalOutpoint(outpoint) {
|
|
9
|
+
const s = outpoint.trim();
|
|
10
|
+
if (s.length >= 66) {
|
|
11
|
+
const sep = s[64];
|
|
12
|
+
if (sep === '.' || sep === '_') {
|
|
13
|
+
return `${s.slice(0, 64)}_${s.slice(65)}`;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const dot = s.indexOf('.');
|
|
17
|
+
if (dot === 64)
|
|
18
|
+
return `${s.slice(0, 64)}_${s.slice(65)}`;
|
|
19
|
+
return s.replace('.', '_');
|
|
20
|
+
}
|
|
21
|
+
/** @deprecated Use {@link formatOrdinalOutpoint} */
|
|
22
|
+
export const formatOriginOutpoint = formatOrdinalOutpoint;
|
|
23
|
+
/**
|
|
24
|
+
* Canonical identity tags for an ordinal (BRC-147).
|
|
23
25
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
+
* Emits filter tags (lowercase-safe). Does **not** emit `name:` (→ CI `name`).
|
|
27
|
+
* Bare `origin` is only for the mint out itself (caller stamps that).
|
|
26
28
|
*/
|
|
27
29
|
export function ordinalTagsFromMetadata(metadata, fallbackOrigin) {
|
|
28
30
|
const tags = [];
|
|
29
31
|
const origin = metadata?.origin || fallbackOrigin;
|
|
30
32
|
if (origin)
|
|
31
|
-
tags.push(`origin:${origin}`);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
tags.push(`origin:${formatOrdinalOutpoint(origin)}`);
|
|
34
|
+
const map = metadata?.map;
|
|
35
|
+
const subTypeData = parseMapSubTypeData(map);
|
|
36
|
+
// Display pointer when media is not at origin (e.g. OrdFS parent / MAP content)
|
|
37
|
+
const content = typeof map?.content === 'string'
|
|
38
|
+
? map.content
|
|
39
|
+
: typeof metadata?.parent === 'string'
|
|
40
|
+
? metadata.parent
|
|
41
|
+
: undefined;
|
|
42
|
+
if (content)
|
|
43
|
+
tags.push(`content:${formatOrdinalOutpoint(content)}`);
|
|
44
|
+
// collectionId is often nested: MAP subTypeData JSON (collection items)
|
|
45
|
+
const collectionId = typeof map?.collectionId === 'string'
|
|
46
|
+
? map.collectionId
|
|
47
|
+
: typeof map?.collection === 'string'
|
|
48
|
+
? map.collection
|
|
49
|
+
: typeof subTypeData?.collectionId === 'string'
|
|
50
|
+
? subTypeData.collectionId
|
|
51
|
+
: typeof subTypeData?.collection === 'string'
|
|
52
|
+
? subTypeData.collection
|
|
53
|
+
: undefined;
|
|
54
|
+
if (collectionId) {
|
|
55
|
+
tags.push(`collection:${formatOrdinalOutpoint(collectionId)}`);
|
|
56
|
+
}
|
|
57
|
+
const app = typeof map?.app === 'string' ? map.app : undefined;
|
|
58
|
+
if (app)
|
|
59
|
+
tags.push(`app:${app}`);
|
|
60
|
+
const typeTag = contentTypeTag(metadata?.contentType);
|
|
61
|
+
if (typeTag)
|
|
62
|
+
tags.push(typeTag);
|
|
37
63
|
return tags;
|
|
38
64
|
}
|
|
39
65
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* `image/png; charset=x` yields `type:image` and `type:image/png`. Returns
|
|
43
|
-
* empty for a missing or blank content type — an empty `type:` is never useful.
|
|
66
|
+
* Single `type:<mime>` tag. Strips `;…` parameters. No category dual-tag.
|
|
44
67
|
*/
|
|
45
|
-
export function
|
|
68
|
+
export function contentTypeTag(contentType) {
|
|
46
69
|
const base = contentType?.split(';')[0]?.trim();
|
|
47
70
|
if (!base)
|
|
48
|
-
return
|
|
49
|
-
|
|
50
|
-
return category && category !== base
|
|
51
|
-
? [`type:${category}`, `type:${base}`]
|
|
52
|
-
: [`type:${base}`];
|
|
71
|
+
return undefined;
|
|
72
|
+
return `type:${base}`;
|
|
53
73
|
}
|
|
54
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* @deprecated Use {@link contentTypeTag}. Returns 0–1 tags for spread compat.
|
|
76
|
+
*/
|
|
77
|
+
export function contentTypeTags(contentType) {
|
|
78
|
+
const t = contentTypeTag(contentType);
|
|
79
|
+
return t ? [t] : [];
|
|
80
|
+
}
|
|
81
|
+
/** Parse MAP `subTypeData` (object or JSON string). */
|
|
82
|
+
export function parseMapSubTypeData(map) {
|
|
83
|
+
if (!map)
|
|
84
|
+
return undefined;
|
|
85
|
+
const raw = map.subTypeData;
|
|
86
|
+
if (raw && typeof raw === 'object' && !Array.isArray(raw)) {
|
|
87
|
+
return raw;
|
|
88
|
+
}
|
|
89
|
+
if (typeof raw === 'string' && raw.trim()) {
|
|
90
|
+
try {
|
|
91
|
+
const o = JSON.parse(raw);
|
|
92
|
+
if (o && typeof o === 'object' && !Array.isArray(o)) {
|
|
93
|
+
return o;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
/* ignore */
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
/** MAP name, falling back to `subTypeData.name`. For CI `name`, not tags. */
|
|
55
103
|
export function nameFromMap(map) {
|
|
56
104
|
if (!map)
|
|
57
105
|
return undefined;
|
|
58
106
|
if (typeof map.name === 'string' && map.name)
|
|
59
107
|
return map.name;
|
|
60
|
-
const subTypeData = map
|
|
108
|
+
const subTypeData = parseMapSubTypeData(map);
|
|
61
109
|
const subName = subTypeData?.name;
|
|
62
110
|
return typeof subName === 'string' && subName ? subName : undefined;
|
|
63
111
|
}
|
|
112
|
+
/** Truncate display name for CI. */
|
|
113
|
+
export function displayNameForCi(name) {
|
|
114
|
+
if (!name?.trim())
|
|
115
|
+
return undefined;
|
|
116
|
+
return name.trim().slice(0, MAX_NAME_TAG_LENGTH);
|
|
117
|
+
}
|
|
64
118
|
//# sourceMappingURL=ordinalTags.js.map
|
package/dist/ordinalTags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ordinalTags.js","sourceRoot":"","sources":["../src/ordinalTags.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"ordinalTags.js","sourceRoot":"","sources":["../src/ordinalTags.ts"],"names":[],"mappings":"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"}
|