@opentabs-dev/shared 0.0.9 → 0.0.10-test.1

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/index.d.ts CHANGED
@@ -5,11 +5,14 @@
5
5
  * to provide compile-time safety for the JSON-RPC wire protocol and shared
6
6
  * domain concepts.
7
7
  */
8
+ export { type Ok, type Err, type Result, ok, err, isOk, isErr, unwrap, unwrapOr, mapResult } from './result.js';
9
+ export { parsePluginPackageJson } from './manifest.js';
10
+ export type { PluginOpentabsField, PluginPackageJson } from './manifest.js';
8
11
  /** Tab state for a plugin */
9
12
  export type TabState = 'closed' | 'unavailable' | 'ready';
10
13
  /** Trust tier for a plugin */
11
14
  export type TrustTier = 'official' | 'community' | 'local';
12
- /** Manifest shape as written by `opentabs build` */
15
+ /** Manifest shape as written by `opentabs-plugin build` */
13
16
  export interface PluginManifest {
14
17
  name: string;
15
18
  version: string;
@@ -17,7 +20,7 @@ export interface PluginManifest {
17
20
  description: string;
18
21
  url_patterns: string[];
19
22
  tools: ManifestTool[];
20
- /** SHA-256 hex hash of the adapter IIFE content (set by `opentabs build`) */
23
+ /** SHA-256 hex hash of the adapter IIFE content (set by `opentabs-plugin build`) */
21
24
  adapterHash?: string;
22
25
  }
23
26
  /** Single tool definition within a plugin manifest */
@@ -136,9 +139,15 @@ export interface ConfigStatePlugin {
136
139
  urlPatterns: string[];
137
140
  tools: WireToolDef[];
138
141
  }
142
+ /** A plugin that failed discovery, sent to the side panel for display */
143
+ export interface ConfigStateFailedPlugin {
144
+ specifier: string;
145
+ error: string;
146
+ }
139
147
  /** config.getState result */
140
148
  export interface ConfigStateResult {
141
149
  plugins: ConfigStatePlugin[];
150
+ failedPlugins: ConfigStateFailedPlugin[];
142
151
  outdatedPlugins: Array<{
143
152
  name: string;
144
153
  currentVersion: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,6 +6,14 @@
6
6
  * domain concepts.
7
7
  */
8
8
  // ---------------------------------------------------------------------------
9
+ // Result type — structured error handling
10
+ // ---------------------------------------------------------------------------
11
+ export { ok, err, isOk, isErr, unwrap, unwrapOr, mapResult } from './result.js';
12
+ // ---------------------------------------------------------------------------
13
+ // Plugin package.json manifest — new plugin metadata format
14
+ // ---------------------------------------------------------------------------
15
+ export { parsePluginPackageJson } from './manifest.js';
16
+ // ---------------------------------------------------------------------------
9
17
  // Protocol version — side panel ↔ MCP server communication
10
18
  // ---------------------------------------------------------------------------
11
19
  /**
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,8EAA8E;AAC9E,0CAA0C;AAC1C,8EAA8E;AAE9E,OAAO,EAAkC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEhH,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAE9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAgOvD,8EAA8E;AAC9E,2DAA2D;AAC3D,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C,8EAA8E;AAC9E,sEAAsE;AACtE,8EAA8E;AAE9E,sFAAsF;AACtF,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,aAAa;IACb,OAAO;IACP,OAAO;IACP,SAAS;IACT,mBAAmB;IACnB,OAAO;CACR,CAAC;AAEF,iGAAiG;AACjG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAW,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,4FAA4F;AAC5F,MAAM,CAAC,MAAM,8BAA8B,GACzC,6EAA6E,CAAC;AAEhF,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,wEAAwE;AACxE,MAAM,CAAC,MAAM,UAAU,GAAG,0BAA0B,CAAC;AAErD,yDAAyD;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IACpC,QAAQ;IACR,SAAS;IACT,UAAU;IACV,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,KAAK;CACN,CAAC,CAAC;AAEH,iFAAiF;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAiB,EAAE;IAChE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,yBAAyB,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QACxB,OAAO,gBAAgB,IAAI,mEAAmE,CAAC;IACjG,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,gBAAgB,IAAI,yCAAyC,CAAC;IACnG,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAiB,EAAE;IACnE,+BAA+B;IAC/B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QACtD,OAAO,gBAAgB,OAAO,+CAA+C,CAAC;IAChF,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,gBAAgB,OAAO,kKAAkK,CAAC;IACnM,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACjD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,oDAAoD,CAAC;IAC9D,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE5B,qFAAqF;IACrF,qFAAqF;IACrF,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO,gBAAgB,OAAO,qBAAqB,IAAI,qFAAqF,CAAC;IAC/I,CAAC;IAED,kFAAkF;IAClF,qFAAqF;IACrF,0DAA0D;IAC1D,IACE,IAAI,KAAK,GAAG;QACZ,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5C,CAAC,iDAAiD,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7D,CAAC;QACD,OAAO,gBAAgB,OAAO,0BAA0B,IAAI,GAAG,CAAC;IAClE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Plugin package.json manifest types and validation.
3
+ *
4
+ * Defines the PluginPackageJson interface representing a plugin's package.json
5
+ * with an `opentabs` field for plugin metadata. The parsePluginPackageJson
6
+ * function validates a raw JSON object and returns a typed Result.
7
+ */
8
+ import type { Result } from './result.js';
9
+ /** Plugin-specific metadata in the `opentabs` field of package.json */
10
+ interface PluginOpentabsField {
11
+ readonly displayName: string;
12
+ readonly description: string;
13
+ readonly urlPatterns: string[];
14
+ /** Lucide icon name (kebab-case) for the plugin in the side panel */
15
+ readonly icon?: string;
16
+ }
17
+ /** A plugin's package.json with the required `opentabs` field */
18
+ interface PluginPackageJson {
19
+ readonly name: string;
20
+ readonly version: string;
21
+ readonly main: string;
22
+ readonly opentabs: PluginOpentabsField;
23
+ }
24
+ /**
25
+ * Parse and validate a raw JSON object as a PluginPackageJson.
26
+ *
27
+ * Checks that the object has a valid plugin package name, a version string,
28
+ * a main entry point, and an opentabs field with the required metadata.
29
+ * Returns a Result with the validated PluginPackageJson or a descriptive error.
30
+ */
31
+ declare const parsePluginPackageJson: (json: unknown, sourcePath: string) => Result<PluginPackageJson, string>;
32
+ export { parsePluginPackageJson };
33
+ export type { PluginOpentabsField, PluginPackageJson };
34
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,uEAAuE;AACvE,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAC/B,qEAAqE;IACrE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iEAAiE;AACjE,UAAU,iBAAiB;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;CACxC;AAeD;;;;;;GAMG;AACH,QAAA,MAAM,sBAAsB,GAAI,MAAM,OAAO,EAAE,YAAY,MAAM,KAAG,MAAM,CAAC,iBAAiB,EAAE,MAAM,CA0EnG,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,CAAC;AAClC,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Plugin package.json manifest types and validation.
3
+ *
4
+ * Defines the PluginPackageJson interface representing a plugin's package.json
5
+ * with an `opentabs` field for plugin metadata. The parsePluginPackageJson
6
+ * function validates a raw JSON object and returns a typed Result.
7
+ */
8
+ import { err, ok } from './result.js';
9
+ /**
10
+ * Validate a plugin name: must start with 'opentabs-plugin-' or be a scoped
11
+ * package (e.g., @org/opentabs-plugin-foo).
12
+ */
13
+ const isValidPluginPackageName = (name) => {
14
+ if (name.startsWith('opentabs-plugin-'))
15
+ return true;
16
+ if (name.startsWith('@')) {
17
+ const parts = name.split('/');
18
+ if (parts.length === 2 && (parts[1] ?? '').startsWith('opentabs-plugin-'))
19
+ return true;
20
+ }
21
+ return false;
22
+ };
23
+ /**
24
+ * Parse and validate a raw JSON object as a PluginPackageJson.
25
+ *
26
+ * Checks that the object has a valid plugin package name, a version string,
27
+ * a main entry point, and an opentabs field with the required metadata.
28
+ * Returns a Result with the validated PluginPackageJson or a descriptive error.
29
+ */
30
+ const parsePluginPackageJson = (json, sourcePath) => {
31
+ if (typeof json !== 'object' || json === null || Array.isArray(json)) {
32
+ return err(`Invalid package.json at ${sourcePath}: expected an object`);
33
+ }
34
+ const obj = json;
35
+ // Validate name
36
+ const name = obj.name;
37
+ if (typeof name !== 'string' || name.length === 0) {
38
+ return err(`Invalid package.json at ${sourcePath}: "name" must be a non-empty string`);
39
+ }
40
+ if (!isValidPluginPackageName(name)) {
41
+ return err(`Invalid plugin package name "${name}" at ${sourcePath}: must start with "opentabs-plugin-" or be a scoped package like "@org/opentabs-plugin-foo"`);
42
+ }
43
+ // Validate version
44
+ const version = obj.version;
45
+ if (typeof version !== 'string' || version.length === 0) {
46
+ return err(`Invalid package.json at ${sourcePath}: "version" must be a non-empty string`);
47
+ }
48
+ // Validate main
49
+ const main = obj.main;
50
+ if (typeof main !== 'string' || main.length === 0) {
51
+ return err(`Invalid package.json at ${sourcePath}: "main" must be a non-empty string`);
52
+ }
53
+ // Validate opentabs field
54
+ const opentabs = obj.opentabs;
55
+ if (typeof opentabs !== 'object' || opentabs === null || Array.isArray(opentabs)) {
56
+ return err(`Invalid package.json at ${sourcePath}: "opentabs" field is required and must be an object`);
57
+ }
58
+ const ot = opentabs;
59
+ const displayName = ot.displayName;
60
+ if (typeof displayName !== 'string' || displayName.length === 0) {
61
+ return err(`Invalid package.json at ${sourcePath}: "opentabs.displayName" must be a non-empty string`);
62
+ }
63
+ const description = ot.description;
64
+ if (typeof description !== 'string' || description.length === 0) {
65
+ return err(`Invalid package.json at ${sourcePath}: "opentabs.description" must be a non-empty string`);
66
+ }
67
+ const urlPatterns = ot.urlPatterns;
68
+ if (!Array.isArray(urlPatterns) || urlPatterns.length === 0) {
69
+ return err(`Invalid package.json at ${sourcePath}: "opentabs.urlPatterns" must be a non-empty array of strings`);
70
+ }
71
+ for (let i = 0; i < urlPatterns.length; i++) {
72
+ if (typeof urlPatterns[i] !== 'string') {
73
+ return err(`Invalid package.json at ${sourcePath}: "opentabs.urlPatterns[${i}]" must be a string`);
74
+ }
75
+ }
76
+ const icon = ot.icon;
77
+ if (icon !== undefined && typeof icon !== 'string') {
78
+ return err(`Invalid package.json at ${sourcePath}: "opentabs.icon" must be a string if provided`);
79
+ }
80
+ return ok({
81
+ name,
82
+ version,
83
+ main,
84
+ opentabs: {
85
+ displayName,
86
+ description,
87
+ urlPatterns: urlPatterns,
88
+ ...(typeof icon === 'string' ? { icon } : {}),
89
+ },
90
+ });
91
+ };
92
+ export { parsePluginPackageJson };
93
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Lightweight Result<T, E> type for explicit error propagation.
3
+ *
4
+ * A discriminated union that makes error handling visible in type signatures
5
+ * instead of relying on try/catch. Used across the platform wherever operations
6
+ * can fail with a structured error rather than an exception.
7
+ */
8
+ /** Successful result containing a value */
9
+ export interface Ok<T> {
10
+ readonly ok: true;
11
+ readonly value: T;
12
+ }
13
+ /** Failed result containing an error */
14
+ export interface Err<E> {
15
+ readonly ok: false;
16
+ readonly error: E;
17
+ }
18
+ /** Discriminated union: either Ok<T> or Err<E> */
19
+ export type Result<T, E> = Ok<T> | Err<E>;
20
+ /** Create a successful Result */
21
+ export declare const ok: <T>(value: T) => Ok<T>;
22
+ /** Create a failed Result */
23
+ export declare const err: <E>(error: E) => Err<E>;
24
+ /** Type guard: narrows Result to Ok */
25
+ export declare const isOk: <T, E>(result: Result<T, E>) => result is Ok<T>;
26
+ /** Type guard: narrows Result to Err */
27
+ export declare const isErr: <T, E>(result: Result<T, E>) => result is Err<E>;
28
+ /** Extract the value from an Ok result, or throw if Err */
29
+ export declare const unwrap: <T, E>(result: Result<T, E>) => T;
30
+ /** Extract the value from an Ok result, or return the default if Err */
31
+ export declare const unwrapOr: <T, E>(result: Result<T, E>, defaultValue: T) => T;
32
+ /** Transform the value inside an Ok result, passing Err through unchanged */
33
+ export declare const mapResult: <T, U, E>(result: Result<T, E>, fn: (value: T) => U) => Result<U, E>;
34
+ //# sourceMappingURL=result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,2CAA2C;AAC3C,MAAM,WAAW,EAAE,CAAC,CAAC;IACnB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACnB;AAED,wCAAwC;AACxC,MAAM,WAAW,GAAG,CAAC,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACnB;AAED,kDAAkD;AAClD,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAE1C,iCAAiC;AACjC,eAAO,MAAM,EAAE,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,EAAE,CAAC,CAAC,CAA0B,CAAC;AAEhE,6BAA6B;AAC7B,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,GAAG,CAAC,CAAC,CAA2B,CAAC;AAEnE,uCAAuC;AACvC,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,IAAI,EAAE,CAAC,CAAC,CAAc,CAAC;AAE/E,wCAAwC;AACxC,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,IAAI,GAAG,CAAC,CAAC,CAAe,CAAC;AAElF,2DAA2D;AAC3D,eAAO,MAAM,MAAM,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAGnD,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,QAAQ,GAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,CAAC,KAAG,CAA8C,CAAC;AAEtH,6EAA6E;AAC7E,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAC/C,CAAC"}
package/dist/result.js ADDED
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Lightweight Result<T, E> type for explicit error propagation.
3
+ *
4
+ * A discriminated union that makes error handling visible in type signatures
5
+ * instead of relying on try/catch. Used across the platform wherever operations
6
+ * can fail with a structured error rather than an exception.
7
+ */
8
+ /** Create a successful Result */
9
+ export const ok = (value) => ({ ok: true, value });
10
+ /** Create a failed Result */
11
+ export const err = (error) => ({ ok: false, error });
12
+ /** Type guard: narrows Result to Ok */
13
+ export const isOk = (result) => result.ok;
14
+ /** Type guard: narrows Result to Err */
15
+ export const isErr = (result) => !result.ok;
16
+ /** Extract the value from an Ok result, or throw if Err */
17
+ export const unwrap = (result) => {
18
+ if (result.ok)
19
+ return result.value;
20
+ throw new Error(`unwrap called on Err: ${String(result.error)}`);
21
+ };
22
+ /** Extract the value from an Ok result, or return the default if Err */
23
+ export const unwrapOr = (result, defaultValue) => (result.ok ? result.value : defaultValue);
24
+ /** Transform the value inside an Ok result, passing Err through unchanged */
25
+ export const mapResult = (result, fn) => result.ok ? ok(fn(result.value)) : result;
26
+ //# sourceMappingURL=result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH,iCAAiC;AACjC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAI,KAAQ,EAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAEhE,6BAA6B;AAC7B,MAAM,CAAC,MAAM,GAAG,GAAG,CAAI,KAAQ,EAAU,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAEnE,uCAAuC;AACvC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAO,MAAoB,EAAmB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;AAE/E,wCAAwC;AACxC,MAAM,CAAC,MAAM,KAAK,GAAG,CAAO,MAAoB,EAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;AAElF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,MAAM,GAAG,CAAO,MAAoB,EAAK,EAAE;IACtD,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IACnC,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC;AAEF,wEAAwE;AACxE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAO,MAAoB,EAAE,YAAe,EAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AAEtH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAU,MAAoB,EAAE,EAAmB,EAAgB,EAAE,CAC5F,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opentabs-dev/shared",
3
- "version": "0.0.9",
3
+ "version": "0.0.10-test.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {