@cesarandreslopez/occ 0.6.3 → 0.7.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.
package/README.md CHANGED
@@ -277,6 +277,38 @@ session.chunk({ maxChunkWords: 200 });
277
277
  await session.refresh(); // rebuild index when files change
278
278
  ```
279
279
 
280
+ For persistent caching across sessions with automatic freshness checks:
281
+
282
+ ```ts
283
+ import { openCodeIndexStore } from '@cesarandreslopez/occ/code/store';
284
+
285
+ const store = openCodeIndexStore({
286
+ repoRoot: './my-repo',
287
+ cacheDir: '.occ-cache',
288
+ });
289
+
290
+ // First call builds + caches; subsequent calls load from cache
291
+ const session = await store.getSession({ strategy: 'prefer-cache' });
292
+ session.findByName('UserService');
293
+
294
+ // Check freshness via file manifests before returning cache
295
+ await store.getSession({ strategy: 'ensure-fresh' });
296
+
297
+ // Force a full rebuild
298
+ await store.refresh();
299
+ ```
300
+
301
+ Or use the unified facade for all OCC APIs from a single import:
302
+
303
+ ```ts
304
+ import { createOcc } from '@cesarandreslopez/occ';
305
+
306
+ const occ = createOcc();
307
+ const session = await occ.code.createSession({ repoRoot: './my-repo' });
308
+ const analysis = await occ.workspace.analyze('./my-project', { includeCode: true });
309
+ const doc = await occ.doc.inspect('report.docx', {});
310
+ ```
311
+
280
312
  For workspace-level analysis:
281
313
 
282
314
  ```ts
@@ -297,7 +329,8 @@ Available subpath exports:
297
329
  | `@cesarandreslopez/occ/code/discover` | `discoverCodeFiles` — file discovery |
298
330
  | `@cesarandreslopez/occ/code/chunk` | `chunkCodebase`, `chunkFromIndex` — semantic code chunking |
299
331
  | `@cesarandreslopez/occ/code/session` | `createCodeQuerySession` — stateful code query session |
300
- | `@cesarandreslopez/occ/code/cache` | Index caching utilities |
332
+ | `@cesarandreslopez/occ/code/store` | `openCodeIndexStore` persistent index store with cache strategies |
333
+ | `@cesarandreslopez/occ/code/cache` | Index caching utilities (legacy — prefer `./code/store`) |
301
334
  | `@cesarandreslopez/occ/doc/inspect` | `inspectDocument` — document metadata and content extraction |
302
335
  | `@cesarandreslopez/occ/doc/types` | Document inspection types |
303
336
  | `@cesarandreslopez/occ/doc/discover` | Document file discovery |
@@ -24,3 +24,4 @@ export interface CodeQuerySession {
24
24
  chunk(options?: CodeSessionChunkOptions): CodeChunk[];
25
25
  }
26
26
  export declare function createCodeQuerySession(options: BuildCodebaseOptions, onProgress?: OnProgress): Promise<CodeQuerySession>;
27
+ export declare function createCodeQuerySessionFromIndex(options: BuildCodebaseOptions, index: CodebaseIndex): CodeQuerySession;
@@ -56,4 +56,7 @@ export async function createCodeQuerySession(options, onProgress) {
56
56
  const index = await buildCodebaseIndex(options, onProgress);
57
57
  return new InMemoryCodeQuerySession(options, index);
58
58
  }
59
+ export function createCodeQuerySessionFromIndex(options, index) {
60
+ return new InMemoryCodeQuerySession(options, index);
61
+ }
59
62
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/code/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/code/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { type CodeQuerySession } from './session.js';
2
+ import type { CodebaseIndex } from './types.js';
3
+ import type { OnProgress } from '../progress-event.js';
4
+ export type StoreStrategy = 'prefer-cache' | 'ensure-fresh' | 'rebuild';
5
+ export interface CodeIndexStoreOptions {
6
+ repoRoot: string;
7
+ cacheDir: string;
8
+ excludeDir?: string[];
9
+ noGitignore?: boolean;
10
+ }
11
+ export interface StoreSessionOptions {
12
+ strategy?: StoreStrategy;
13
+ signal?: AbortSignal;
14
+ onProgress?: OnProgress;
15
+ }
16
+ export interface StoreMetadata {
17
+ schemaVersion: number;
18
+ occVersion: string;
19
+ repoRoot: string;
20
+ builtAt: string;
21
+ fileCount: number;
22
+ nodeCount: number;
23
+ edgeCount: number;
24
+ loadSource: 'cache' | 'build';
25
+ buildOptionFingerprint: string;
26
+ }
27
+ export interface CodeIndexStore {
28
+ getSession(options?: StoreSessionOptions): Promise<CodeQuerySession>;
29
+ refresh(options?: {
30
+ signal?: AbortSignal;
31
+ onProgress?: OnProgress;
32
+ }): Promise<CodeQuerySession>;
33
+ exportIndex(options?: StoreSessionOptions): Promise<CodebaseIndex>;
34
+ clear(): Promise<void>;
35
+ getMetadata(): StoreMetadata | null;
36
+ }
37
+ export declare function openCodeIndexStore(options: CodeIndexStoreOptions): CodeIndexStore;
@@ -0,0 +1,283 @@
1
+ import { readFile, writeFile, mkdir, rm, stat } from 'node:fs/promises';
2
+ import { createHash } from 'node:crypto';
3
+ import path from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { buildCodebaseIndex } from './build.js';
6
+ import { createCodeQuerySessionFromIndex } from './session.js';
7
+ import { discoverCodeFiles } from './discover.js';
8
+ // ---------------------------------------------------------------------------
9
+ // Constants
10
+ // ---------------------------------------------------------------------------
11
+ const SCHEMA_VERSION = 1;
12
+ // Resolve version from package.json — works from both src/ (dev) and dist/src/ (built)
13
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
14
+ let _occVersion;
15
+ async function getOccVersion() {
16
+ if (_occVersion)
17
+ return _occVersion;
18
+ for (const rel of ['../..', '../../..']) {
19
+ try {
20
+ const raw = await readFile(path.resolve(__dirname, rel, 'package.json'), 'utf8');
21
+ const pkg = JSON.parse(raw);
22
+ if (pkg.version) {
23
+ _occVersion = pkg.version;
24
+ return _occVersion;
25
+ }
26
+ }
27
+ catch { /* try next */ }
28
+ }
29
+ _occVersion = '0.0.0';
30
+ return _occVersion;
31
+ }
32
+ // ---------------------------------------------------------------------------
33
+ // Helpers
34
+ // ---------------------------------------------------------------------------
35
+ function buildOptionFingerprint(opts) {
36
+ const material = JSON.stringify({
37
+ excludeDir: (opts.excludeDir ?? []).slice().sort(),
38
+ noGitignore: opts.noGitignore ?? false,
39
+ });
40
+ return createHash('sha256').update(material).digest('hex').slice(0, 16);
41
+ }
42
+ function indexPath(cacheDir) {
43
+ return path.join(cacheDir, 'index.json');
44
+ }
45
+ function metaPath(cacheDir) {
46
+ return path.join(cacheDir, 'meta.json');
47
+ }
48
+ function manifestPath(cacheDir) {
49
+ return path.join(cacheDir, 'manifest.json');
50
+ }
51
+ function checkAbort(signal) {
52
+ if (signal?.aborted) {
53
+ throw new DOMException('The operation was aborted.', 'AbortError');
54
+ }
55
+ }
56
+ // ---------------------------------------------------------------------------
57
+ // Cache I/O
58
+ // ---------------------------------------------------------------------------
59
+ async function loadCachedIndex(cacheDir) {
60
+ try {
61
+ const raw = await readFile(indexPath(cacheDir), 'utf8');
62
+ if (!raw)
63
+ return undefined;
64
+ return JSON.parse(raw);
65
+ }
66
+ catch {
67
+ return undefined;
68
+ }
69
+ }
70
+ async function loadCacheMeta(cacheDir) {
71
+ try {
72
+ const raw = await readFile(metaPath(cacheDir), 'utf8');
73
+ if (!raw)
74
+ return undefined;
75
+ const parsed = JSON.parse(raw);
76
+ if (parsed.schemaVersion !== SCHEMA_VERSION)
77
+ return undefined;
78
+ return parsed;
79
+ }
80
+ catch {
81
+ return undefined;
82
+ }
83
+ }
84
+ async function loadManifest(cacheDir) {
85
+ try {
86
+ const raw = await readFile(manifestPath(cacheDir), 'utf8');
87
+ if (!raw)
88
+ return undefined;
89
+ return JSON.parse(raw);
90
+ }
91
+ catch {
92
+ return undefined;
93
+ }
94
+ }
95
+ async function persistCache(cacheDir, index, buildOpts, onProgress) {
96
+ await mkdir(cacheDir, { recursive: true });
97
+ onProgress?.({ phase: 'serialize', total: 3, completed: 0, detail: 'writing cache' });
98
+ // Strip file content/lines from cached index to reduce size
99
+ const slimFiles = index.files.map(f => ({ ...f, content: '', lines: [] }));
100
+ const slimIndex = { ...index, files: slimFiles };
101
+ await writeFile(indexPath(cacheDir), JSON.stringify(slimIndex), 'utf8');
102
+ onProgress?.({ phase: 'serialize', total: 3, completed: 1, detail: 'index written' });
103
+ // Build and write manifest (stat calls in parallel)
104
+ const repoRoot = path.resolve(buildOpts.repoRoot);
105
+ const statResults = await Promise.all(index.files.map(async (file) => {
106
+ try {
107
+ const fileStat = await stat(path.join(repoRoot, file.relativePath));
108
+ return { relativePath: file.relativePath, size: fileStat.size, mtimeMs: fileStat.mtimeMs };
109
+ }
110
+ catch {
111
+ return null; // File may have been deleted between build and persist
112
+ }
113
+ }));
114
+ const manifest = statResults.filter((e) => e !== null);
115
+ await writeFile(manifestPath(cacheDir), JSON.stringify(manifest), 'utf8');
116
+ onProgress?.({ phase: 'serialize', total: 3, completed: 2, detail: 'manifest written' });
117
+ // Write metadata
118
+ const occVersion = await getOccVersion();
119
+ const meta = {
120
+ schemaVersion: SCHEMA_VERSION,
121
+ occVersion,
122
+ repoRoot: repoRoot,
123
+ builtAt: new Date().toISOString(),
124
+ fileCount: index.files.length,
125
+ nodeCount: index.nodes.length,
126
+ edgeCount: index.edges.length,
127
+ buildOptionFingerprint: buildOptionFingerprint(buildOpts),
128
+ };
129
+ await writeFile(metaPath(cacheDir), JSON.stringify(meta, null, 2), 'utf8');
130
+ onProgress?.({ phase: 'serialize', total: 3, completed: 3, detail: 'metadata written' });
131
+ return meta;
132
+ }
133
+ // ---------------------------------------------------------------------------
134
+ // Manifest freshness check
135
+ // ---------------------------------------------------------------------------
136
+ async function isManifestFresh(manifest, repoRoot, buildOpts) {
137
+ // Discover current files to detect additions/deletions
138
+ const currentFiles = await discoverCodeFiles(repoRoot, {
139
+ excludeDir: buildOpts.excludeDir,
140
+ noGitignore: buildOpts.noGitignore,
141
+ });
142
+ const currentRelPaths = new Set(currentFiles.map(f => path.relative(repoRoot, f)));
143
+ const manifestRelPaths = new Set(manifest.map(e => e.relativePath));
144
+ // Check for added or deleted files
145
+ if (currentRelPaths.size !== manifestRelPaths.size)
146
+ return false;
147
+ for (const rel of currentRelPaths) {
148
+ if (!manifestRelPaths.has(rel))
149
+ return false;
150
+ }
151
+ // Check size and mtime for each file
152
+ for (const entry of manifest) {
153
+ try {
154
+ const fileStat = await stat(path.join(repoRoot, entry.relativePath));
155
+ if (fileStat.size !== entry.size || fileStat.mtimeMs !== entry.mtimeMs) {
156
+ return false;
157
+ }
158
+ }
159
+ catch {
160
+ return false; // File disappeared
161
+ }
162
+ }
163
+ return true;
164
+ }
165
+ // ---------------------------------------------------------------------------
166
+ // Store implementation
167
+ // ---------------------------------------------------------------------------
168
+ export function openCodeIndexStore(options) {
169
+ const repoRoot = path.resolve(options.repoRoot);
170
+ const { cacheDir } = options;
171
+ const fingerprint = buildOptionFingerprint(options);
172
+ const buildOpts = {
173
+ repoRoot,
174
+ excludeDir: options.excludeDir,
175
+ noGitignore: options.noGitignore,
176
+ };
177
+ let currentSession = null;
178
+ let currentMeta = null;
179
+ async function buildAndPersist(signal, onProgress) {
180
+ checkAbort(signal);
181
+ const index = await buildCodebaseIndex(buildOpts, onProgress);
182
+ checkAbort(signal);
183
+ const cacheMeta = await persistCache(cacheDir, index, options, onProgress);
184
+ const session = createCodeQuerySessionFromIndex(buildOpts, index);
185
+ const meta = {
186
+ ...cacheMeta,
187
+ loadSource: 'build',
188
+ };
189
+ return { session, meta };
190
+ }
191
+ async function loadFromCache(onProgress) {
192
+ onProgress?.({ phase: 'cache-check', total: 1, completed: 0, detail: 'checking cache' });
193
+ const cacheMeta = await loadCacheMeta(cacheDir);
194
+ if (!cacheMeta)
195
+ return undefined;
196
+ if (cacheMeta.buildOptionFingerprint !== fingerprint)
197
+ return undefined;
198
+ if (cacheMeta.occVersion !== await getOccVersion())
199
+ return undefined;
200
+ onProgress?.({ phase: 'deserialize', total: 1, completed: 0, detail: 'loading index' });
201
+ const cachedIndex = await loadCachedIndex(cacheDir);
202
+ if (!cachedIndex)
203
+ return undefined;
204
+ onProgress?.({ phase: 'deserialize', total: 1, completed: 1, detail: 'index loaded' });
205
+ const session = createCodeQuerySessionFromIndex(buildOpts, cachedIndex);
206
+ const meta = {
207
+ ...cacheMeta,
208
+ loadSource: 'cache',
209
+ };
210
+ return { session, meta };
211
+ }
212
+ return {
213
+ async getSession(opts) {
214
+ const strategy = opts?.strategy ?? 'prefer-cache';
215
+ const { signal, onProgress } = opts ?? {};
216
+ checkAbort(signal);
217
+ if (strategy === 'rebuild') {
218
+ const result = await buildAndPersist(signal, onProgress);
219
+ currentSession = result.session;
220
+ currentMeta = result.meta;
221
+ return result.session;
222
+ }
223
+ if (strategy === 'prefer-cache') {
224
+ const cached = await loadFromCache(onProgress);
225
+ if (cached) {
226
+ currentSession = cached.session;
227
+ currentMeta = cached.meta;
228
+ return cached.session;
229
+ }
230
+ // Cache miss — build
231
+ const result = await buildAndPersist(signal, onProgress);
232
+ currentSession = result.session;
233
+ currentMeta = result.meta;
234
+ return result.session;
235
+ }
236
+ // ensure-fresh
237
+ const manifest = await loadManifest(cacheDir);
238
+ if (manifest) {
239
+ onProgress?.({ phase: 'cache-check', total: 1, completed: 0, detail: 'checking freshness' });
240
+ const fresh = await isManifestFresh(manifest, repoRoot, options);
241
+ if (fresh) {
242
+ const cached = await loadFromCache(onProgress);
243
+ if (cached) {
244
+ currentSession = cached.session;
245
+ currentMeta = cached.meta;
246
+ return cached.session;
247
+ }
248
+ }
249
+ }
250
+ // Stale or no cache — rebuild
251
+ const result = await buildAndPersist(signal, onProgress);
252
+ currentSession = result.session;
253
+ currentMeta = result.meta;
254
+ return result.session;
255
+ },
256
+ async refresh(opts) {
257
+ const result = await buildAndPersist(opts?.signal, opts?.onProgress);
258
+ currentSession = result.session;
259
+ currentMeta = result.meta;
260
+ return result.session;
261
+ },
262
+ async exportIndex(opts) {
263
+ if (currentSession)
264
+ return currentSession.getIndex();
265
+ const session = await this.getSession(opts);
266
+ return session.getIndex();
267
+ },
268
+ async clear() {
269
+ currentSession = null;
270
+ currentMeta = null;
271
+ try {
272
+ await rm(cacheDir, { recursive: true, force: true });
273
+ }
274
+ catch {
275
+ // Ignore if already missing
276
+ }
277
+ },
278
+ getMetadata() {
279
+ return currentMeta;
280
+ },
281
+ };
282
+ }
283
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/code/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { buildCodebaseIndex } from './code/build.js';
2
+ import { createCodeQuerySession, createCodeQuerySessionFromIndex } from './code/session.js';
3
+ import { openCodeIndexStore } from './code/store.js';
4
+ import { chunkCodebase, chunkFromIndex } from './code/chunk.js';
5
+ import { discoverCodeFiles } from './code/discover.js';
6
+ import { inspectDocument } from './doc/inspect.js';
7
+ import { discoverDocuments } from './doc/discover.js';
8
+ import { inspectWorkbook } from './sheet/inspect.js';
9
+ import { inspectPresentation } from './slide/inspect.js';
10
+ import { analyzeWorkspace } from './workspace/analyze.js';
11
+ import { inspectWorkspaceDocumentSet } from './workspace/documents.js';
12
+ export type { CodebaseIndex, CodeNode, CodeEdge, CodeNodeType, CodeEdgeType } from './code/types.js';
13
+ export type { CodeQuerySession, CodeSessionChunkOptions } from './code/session.js';
14
+ export type { CodeIndexStore, CodeIndexStoreOptions, StoreStrategy, StoreMetadata, StoreSessionOptions } from './code/store.js';
15
+ export type { CodeChunk } from './code/chunk.js';
16
+ export type { BuildCodebaseOptions } from './code/build.js';
17
+ export type { OnProgress, ProgressEvent } from './progress-event.js';
18
+ export interface OccCodeNamespace {
19
+ buildIndex: typeof buildCodebaseIndex;
20
+ createSession: typeof createCodeQuerySession;
21
+ createSessionFromIndex: typeof createCodeQuerySessionFromIndex;
22
+ openStore: typeof openCodeIndexStore;
23
+ discover: typeof discoverCodeFiles;
24
+ chunk: typeof chunkCodebase;
25
+ chunkFromIndex: typeof chunkFromIndex;
26
+ }
27
+ export interface OccWorkspaceNamespace {
28
+ analyze: typeof analyzeWorkspace;
29
+ inspectDocuments: typeof inspectWorkspaceDocumentSet;
30
+ }
31
+ export interface OccDocNamespace {
32
+ inspect: typeof inspectDocument;
33
+ discover: typeof discoverDocuments;
34
+ }
35
+ export interface OccSheetNamespace {
36
+ inspect: typeof inspectWorkbook;
37
+ }
38
+ export interface OccSlideNamespace {
39
+ inspect: typeof inspectPresentation;
40
+ }
41
+ export interface OccNamespace {
42
+ code: OccCodeNamespace;
43
+ workspace: OccWorkspaceNamespace;
44
+ doc: OccDocNamespace;
45
+ sheet: OccSheetNamespace;
46
+ slide: OccSlideNamespace;
47
+ }
48
+ export declare function createOcc(): OccNamespace;
@@ -0,0 +1,39 @@
1
+ import { buildCodebaseIndex } from './code/build.js';
2
+ import { createCodeQuerySession, createCodeQuerySessionFromIndex, } from './code/session.js';
3
+ import { openCodeIndexStore } from './code/store.js';
4
+ import { chunkCodebase, chunkFromIndex } from './code/chunk.js';
5
+ import { discoverCodeFiles } from './code/discover.js';
6
+ import { inspectDocument } from './doc/inspect.js';
7
+ import { discoverDocuments } from './doc/discover.js';
8
+ import { inspectWorkbook } from './sheet/inspect.js';
9
+ import { inspectPresentation } from './slide/inspect.js';
10
+ import { analyzeWorkspace } from './workspace/analyze.js';
11
+ import { inspectWorkspaceDocumentSet } from './workspace/documents.js';
12
+ export function createOcc() {
13
+ return {
14
+ code: {
15
+ buildIndex: buildCodebaseIndex,
16
+ createSession: createCodeQuerySession,
17
+ createSessionFromIndex: createCodeQuerySessionFromIndex,
18
+ openStore: openCodeIndexStore,
19
+ discover: discoverCodeFiles,
20
+ chunk: chunkCodebase,
21
+ chunkFromIndex: chunkFromIndex,
22
+ },
23
+ workspace: {
24
+ analyze: analyzeWorkspace,
25
+ inspectDocuments: inspectWorkspaceDocumentSet,
26
+ },
27
+ doc: {
28
+ inspect: inspectDocument,
29
+ discover: discoverDocuments,
30
+ },
31
+ sheet: {
32
+ inspect: inspectWorkbook,
33
+ },
34
+ slide: {
35
+ inspect: inspectPresentation,
36
+ },
37
+ };
38
+ }
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AA8CvE,MAAM,UAAU,SAAS;IACvB,OAAO;QACL,IAAI,EAAE;YACJ,UAAU,EAAE,kBAAkB;YAC9B,aAAa,EAAE,sBAAsB;YACrC,sBAAsB,EAAE,+BAA+B;YACvD,SAAS,EAAE,kBAAkB;YAC7B,QAAQ,EAAE,iBAAiB;YAC3B,KAAK,EAAE,aAAa;YACpB,cAAc,EAAE,cAAc;SAC/B;QACD,SAAS,EAAE;YACT,OAAO,EAAE,gBAAgB;YACzB,gBAAgB,EAAE,2BAA2B;SAC9C;QACD,GAAG,EAAE;YACH,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,iBAAiB;SAC5B;QACD,KAAK,EAAE;YACL,OAAO,EAAE,eAAe;SACzB;QACD,KAAK,EAAE;YACL,OAAO,EAAE,mBAAmB;SAC7B;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@cesarandreslopez/occ",
3
- "version": "0.6.3",
3
+ "version": "0.7.0",
4
4
  "description": "Office Cloc and Count — scc-style summary tables for office documents",
5
5
  "type": "module",
6
- "main": "./dist/bin/occ.js",
7
- "types": "./dist/bin/occ.d.ts",
6
+ "main": "./dist/src/index.js",
7
+ "types": "./dist/src/index.d.ts",
8
8
  "bin": {
9
9
  "occ": "./dist/bin/occ.js"
10
10
  },
@@ -37,8 +37,8 @@
37
37
  ],
38
38
  "exports": {
39
39
  ".": {
40
- "types": "./dist/bin/occ.d.ts",
41
- "default": "./dist/bin/occ.js"
40
+ "types": "./dist/src/index.d.ts",
41
+ "default": "./dist/src/index.js"
42
42
  },
43
43
  "./code/build": {
44
44
  "types": "./dist/src/code/build.d.ts",
@@ -68,6 +68,10 @@
68
68
  "types": "./dist/src/code/cache.d.ts",
69
69
  "default": "./dist/src/code/cache.js"
70
70
  },
71
+ "./code/store": {
72
+ "types": "./dist/src/code/store.d.ts",
73
+ "default": "./dist/src/code/store.js"
74
+ },
71
75
  "./doc/inspect": {
72
76
  "types": "./dist/src/doc/inspect.d.ts",
73
77
  "default": "./dist/src/doc/inspect.js"
@@ -172,6 +176,9 @@
172
176
  "code/cache": [
173
177
  "dist/src/code/cache.d.ts"
174
178
  ],
179
+ "code/store": [
180
+ "dist/src/code/store.d.ts"
181
+ ],
175
182
  "doc/inspect": [
176
183
  "dist/src/doc/inspect.d.ts"
177
184
  ],