cache
This commit is contained in:
parent
69d74a278d
commit
43889d28e9
4
packages/cache/.gitignore
vendored
Normal file
4
packages/cache/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
/node_modules
|
||||
/coverage
|
||||
*.log
|
||||
.DS_Store
|
||||
4
packages/cache/.npmignore
vendored
Normal file
4
packages/cache/.npmignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
./docs
|
||||
./scripts
|
||||
./tests
|
||||
./incoming
|
||||
25
packages/cache/.vscode/launch.json
vendored
Normal file
25
packages/cache/.vscode/launch.json
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"name": "Launch Program - Tests:File",
|
||||
"skipFiles": [
|
||||
"<node_internals>/**"
|
||||
],
|
||||
"program": "${workspaceFolder}/main.js",
|
||||
"preLaunchTask": "tsc: build - tsconfig.json",
|
||||
"outFiles": [
|
||||
"${workspaceFolder}//**/*.js"
|
||||
],
|
||||
"args": [
|
||||
"test",
|
||||
"file"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
9
packages/cache/LICENSE
vendored
Normal file
9
packages/cache/LICENSE
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
Copyright (c) <year> <owner> All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
15
packages/cache/README.md
vendored
Normal file
15
packages/cache/README.md
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
# OSR - Cache
|
||||
|
||||
- [-] Cross - OS - Storage
|
||||
- [x] Namespaces
|
||||
|
||||
- [ ] API
|
||||
- [ ] list
|
||||
- [ ] purge
|
||||
- [ ] pack / unpack (encrypted)
|
||||
- [ ] move / cp - ns
|
||||
|
||||
## References
|
||||
|
||||
- [cacache - API](https://github.com/npm/cacache)
|
||||
- [https://github.com/npm/ssri#integrity-stream](https://github.com/npm/ssri#integrity-stream)
|
||||
3
packages/cache/dist/_cli.d.ts
vendored
Normal file
3
packages/cache/dist/_cli.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
import { IOptions } from './options.js';
|
||||
export declare const defaults: () => void;
|
||||
export declare const sanitize: (argv: any) => IOptions | boolean;
|
||||
39
packages/cache/dist/_cli.js
vendored
Normal file
39
packages/cache/dist/_cli.js
vendored
Normal file
@ -0,0 +1,39 @@
|
||||
import * as path from 'node:path';
|
||||
import { sync as exists } from '@polymech/fs/exists';
|
||||
import { logger } from './index.js';
|
||||
// tweaks and handlers
|
||||
export const defaults = () => {
|
||||
// default command
|
||||
const DefaultCommand = 'info';
|
||||
if (process.argv.length === 2) {
|
||||
process.argv.push(DefaultCommand);
|
||||
}
|
||||
// currently no default handler, display only :
|
||||
process.on('unhandledRejection', (reason) => {
|
||||
console.error('Unhandled rejection, reason: ', reason);
|
||||
});
|
||||
};
|
||||
export const sanitize = (argv) => {
|
||||
let ret = {
|
||||
all: argv.all,
|
||||
src: argv.src,
|
||||
types: argv.types,
|
||||
dst: argv.dst,
|
||||
depth: argv.dept
|
||||
};
|
||||
if (argv.cwd) {
|
||||
ret.cwd = path.resolve(argv.cwd);
|
||||
if (!exists((ret.cwd))) {
|
||||
logger.error(`Invalid working directory ${argv.cwd}`);
|
||||
}
|
||||
}
|
||||
else {
|
||||
ret.cwd = process.cwd();
|
||||
}
|
||||
ret = {
|
||||
...ret,
|
||||
...{ variables: {} }
|
||||
};
|
||||
return ret;
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2NsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9fY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBRWpDLE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVuQyxzQkFBc0I7QUFDdEIsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRTtJQUN6QixrQkFBa0I7SUFDbEIsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDO0lBQzlCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELCtDQUErQztJQUMvQyxPQUFPLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFLENBQUMsTUFBYyxFQUFFLEVBQUU7UUFDaEQsT0FBTyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQVMsRUFBc0IsRUFBRTtJQUV0RCxJQUFJLEdBQUcsR0FBUTtRQUNYLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztRQUNiLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztRQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7UUFDYixLQUFLLEVBQUMsSUFBSSxDQUFDLElBQUk7S0FDbEIsQ0FBQTtJQUVELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1gsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyQixNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0wsQ0FBQztTQUFNLENBQUM7UUFDSixHQUFHLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsR0FBRyxHQUFHO1FBQ0YsR0FBRyxHQUFHO1FBQ04sR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7S0FDdkIsQ0FBQTtJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQyxDQUFDIn0=
|
||||
2
packages/cache/dist/commands/info.d.ts
vendored
Normal file
2
packages/cache/dist/commands/info.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import * as CLI from 'yargs';
|
||||
export declare const register: (cli: CLI.Argv) => any;
|
||||
32
packages/cache/dist/commands/info.js
vendored
Normal file
32
packages/cache/dist/commands/info.js
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
import * as path from 'path';
|
||||
import { substitute } from '@polymech/core/strings';
|
||||
import { CONFIG_DEFAULT, DEFAULT_ROOTS } from '@polymech/commons';
|
||||
import { logger } from '../index.js';
|
||||
import { defaults } from '../_cli.js';
|
||||
const defaultOptions = (yargs) => {
|
||||
return yargs.option('debug', {
|
||||
default: 'false',
|
||||
describe: 'debug messages'
|
||||
}).option('env_key', {
|
||||
default: 'OSR-CONFIG',
|
||||
describe: 'Environment key to the config path'
|
||||
});
|
||||
};
|
||||
let options = (yargs) => defaultOptions(yargs);
|
||||
export const register = (cli) => {
|
||||
return cli.command('user', 'User commands, call with <verb>', options, async (argv) => {
|
||||
defaults();
|
||||
if (argv.help) {
|
||||
return;
|
||||
}
|
||||
const args = argv;
|
||||
const config = CONFIG_DEFAULT(args.env_key);
|
||||
const opts = {
|
||||
verb: argv.verb,
|
||||
src: path.resolve(substitute(args.src, DEFAULT_ROOTS)),
|
||||
dst: path.resolve(args.dst)
|
||||
};
|
||||
logger.debug(`Reading OSR Config with key "${argv.env_key}"`, opts);
|
||||
});
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWpFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVyQyxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDekIsT0FBTyxFQUFFLE9BQU87UUFDaEIsUUFBUSxFQUFFLGdCQUFnQjtLQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNqQixPQUFPLEVBQUUsWUFBWTtRQUNyQixRQUFRLEVBQUUsb0NBQW9DO0tBQ2pELENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQUNELElBQUksT0FBTyxHQUFHLENBQUMsS0FBZSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDeEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBYSxFQUFFLEVBQUU7SUFDdEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxpQ0FBaUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQW1CLEVBQUUsRUFBRTtRQUNqRyxRQUFRLEVBQUUsQ0FBQTtRQUNWLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQUMsT0FBTTtRQUFDLENBQUM7UUFDekIsTUFBTSxJQUFJLEdBQVEsSUFBSSxDQUFBO1FBQ3RCLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDM0MsTUFBTSxJQUFJLEdBQUc7WUFDVCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN0RCxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQzlCLENBQUE7UUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFFdkUsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUEifQ==
|
||||
2
packages/cache/dist/commands/test.d.ts
vendored
Normal file
2
packages/cache/dist/commands/test.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
import * as CLI from 'yargs';
|
||||
export declare const register: (cli: CLI.Argv) => any;
|
||||
50
packages/cache/dist/commands/test.js
vendored
Normal file
50
packages/cache/dist/commands/test.js
vendored
Normal file
@ -0,0 +1,50 @@
|
||||
import * as path from 'path';
|
||||
import { sync as read } from '@polymech/fs/read';
|
||||
import { substitute } from '@polymech/core/strings';
|
||||
import { DEFAULT_ROOTS } from '@polymech/commons';
|
||||
import { logger } from '../index.js';
|
||||
import { defaults } from '../_cli.js';
|
||||
import { get_cached, set_cached } from '../lib/index.js';
|
||||
const defaultOptions = (yargs) => {
|
||||
return yargs.option('debug', {
|
||||
default: 'false',
|
||||
describe: 'debug messages'
|
||||
}).option('verb', {
|
||||
description: 'test verb : file|folder'
|
||||
}).option('src', {
|
||||
description: 'raw source file',
|
||||
default: './tests/src.json'
|
||||
}).option('dst', {
|
||||
description: 'dst output path, supports XLS|CSV|HTML',
|
||||
default: './tests/dst.json'
|
||||
}).option('env_key', {
|
||||
default: 'OSR-CONFIG',
|
||||
describe: 'Environment key to the config path'
|
||||
});
|
||||
};
|
||||
let options = (yargs) => defaultOptions(yargs);
|
||||
export const register = (cli) => {
|
||||
return cli.command('test <verb>', 'Test commands', options, async (argv) => {
|
||||
defaults();
|
||||
if (argv.help) {
|
||||
return;
|
||||
}
|
||||
const args = argv;
|
||||
const opts = {
|
||||
verb: argv.verb,
|
||||
src: path.resolve(substitute(args.src, DEFAULT_ROOTS)),
|
||||
dst: path.resolve(substitute(args.dst, DEFAULT_ROOTS))
|
||||
};
|
||||
if (!opts.verb) {
|
||||
logger.error('No verb specified');
|
||||
return;
|
||||
}
|
||||
if (opts.verb === 'file') {
|
||||
const src = read(opts.src, 'json');
|
||||
const hashed = await get_cached(opts.src, { a: 1 }, 'tests');
|
||||
const shashed = await set_cached(opts.src, { a: 1 }, 'tests', src);
|
||||
}
|
||||
logger.debug(`Reading OSR Config with key "${argv.env_key}"`, opts);
|
||||
});
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUV4RCxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDekIsT0FBTyxFQUFFLE9BQU87UUFDaEIsUUFBUSxFQUFFLGdCQUFnQjtLQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNkLFdBQVcsRUFBRSx5QkFBeUI7S0FDekMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixXQUFXLEVBQUUsaUJBQWlCO1FBQzlCLE9BQU8sRUFBRSxrQkFBa0I7S0FDOUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixXQUFXLEVBQUUsd0NBQXdDO1FBQ3JELE9BQU8sRUFBRSxrQkFBa0I7S0FDOUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDakIsT0FBTyxFQUFFLFlBQVk7UUFDckIsUUFBUSxFQUFFLG9DQUFvQztLQUNqRCxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUM7QUFFRixJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBR3pELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQWEsRUFBRSxFQUFFO0lBQ3RDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBbUIsRUFBRSxFQUFFO1FBRXRGLFFBQVEsRUFBRSxDQUFDO1FBQ1gsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUMxQixNQUFNLElBQUksR0FBUSxJQUFJLENBQUM7UUFFdkIsTUFBTSxJQUFJLEdBQUc7WUFDVCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN0RCxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztTQUN6RCxDQUFDO1FBRUYsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNiLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNsQyxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUV2QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNuQyxNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQzVELE1BQU0sT0FBTyxHQUFHLE1BQU0sVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQ3RFLENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEUsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMifQ==
|
||||
1
packages/cache/dist/constants.d.ts
vendored
Normal file
1
packages/cache/dist/constants.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export declare const MODULE_NAME = "OSR-CACHE";
|
||||
2
packages/cache/dist/constants.js
vendored
Normal file
2
packages/cache/dist/constants.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export const MODULE_NAME = `OSR-CACHE`;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDIn0=
|
||||
4
packages/cache/dist/index.d.ts
vendored
Normal file
4
packages/cache/dist/index.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
export * from './lib/index.js';
|
||||
export { sanitize } from './_cli.js';
|
||||
export { MODULE_NAME } from './constants.js';
|
||||
export declare const logger: any;
|
||||
7
packages/cache/dist/index.js
vendored
Normal file
7
packages/cache/dist/index.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
import { MODULE_NAME } from './constants.js';
|
||||
export * from './lib/index.js';
|
||||
import { createLogger } from '@polymech/log';
|
||||
export { sanitize } from './_cli.js';
|
||||
export { MODULE_NAME } from './constants.js';
|
||||
export const logger = createLogger(MODULE_NAME);
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzVDLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM1QyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQVEsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFBIn0=
|
||||
11
packages/cache/dist/lib/index.d.ts
vendored
Normal file
11
packages/cache/dist/lib/index.d.ts
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
export declare const cache_path: (_namespace: string) => string;
|
||||
export declare const fileAsBuffer: (path: string) => Buffer;
|
||||
export declare const file_hash: (path: string, opts?: any, namespace?: string) => any;
|
||||
export declare const object_hash: (opts?: any, namespace?: string) => any;
|
||||
export declare const file_name_hash: (path: string, opts?: any, namespace?: string) => any;
|
||||
export declare const set_cached: (path: string, opts: any, namespace: string, data: any, metadata?: any) => Promise<any>;
|
||||
export declare const set_cached_object: (opts: any, namespace: string, data: any, metadata?: any) => Promise<any>;
|
||||
export declare const get_cache_key: (path: string, opts?: any, namespace?: string) => Promise<any>;
|
||||
export declare const get_cached: (path: string, opts?: any, namespace?: string) => Promise<any>;
|
||||
export declare const get_cached_object: (opts?: any, namespace?: string) => Promise<any>;
|
||||
export declare const get_path_cached: (path: string, opts?: any, namespace?: string) => Promise<any>;
|
||||
150
packages/cache/dist/lib/index.js
vendored
Normal file
150
packages/cache/dist/lib/index.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
packages/cache/dist/main.d.ts
vendored
Normal file
2
packages/cache/dist/main.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/env node
|
||||
export {};
|
||||
17
packages/cache/dist/main.js
vendored
Normal file
17
packages/cache/dist/main.js
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env node
|
||||
import { defaults } from './_cli.js';
|
||||
defaults();
|
||||
import * as cli from 'yargs';
|
||||
import { register as registerInfo } from './commands/info.js';
|
||||
registerInfo(cli);
|
||||
import { register as registerTest } from './commands/test.js';
|
||||
registerTest(cli);
|
||||
const argv = cli.argv;
|
||||
if (argv.help) {
|
||||
cli.showHelp();
|
||||
process.exit();
|
||||
}
|
||||
else if (argv.v || argv.version) {
|
||||
process.exit();
|
||||
}
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQUMsUUFBUSxFQUFFLENBQUE7QUFDaEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUE7QUFFNUIsT0FBTyxFQUFFLFFBQVEsSUFBSSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUNoRixPQUFPLEVBQUUsUUFBUSxJQUFJLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBRWhGLE1BQU0sSUFBSSxHQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFFM0IsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDWixHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDZixPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDbkIsQ0FBQztLQUFNLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ25CLENBQUMifQ==
|
||||
5
packages/cache/dist/options.d.ts
vendored
Normal file
5
packages/cache/dist/options.d.ts
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
export * from './lib/index.js';
|
||||
export interface IOptions {
|
||||
}
|
||||
export declare const clone: (obj: any) => any;
|
||||
export declare const parse: (options: IOptions, argv: any) => IOptions;
|
||||
15
packages/cache/dist/options.js
vendored
Normal file
15
packages/cache/dist/options.js
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
export * from './lib/index.js';
|
||||
export const clone = (obj) => {
|
||||
if (null == obj || "object" != typeof obj)
|
||||
return obj;
|
||||
var copy = obj.constructor();
|
||||
for (var attr in obj) {
|
||||
if (obj.hasOwnProperty(attr))
|
||||
copy[attr] = obj[attr];
|
||||
}
|
||||
return copy;
|
||||
};
|
||||
export const parse = (options, argv) => {
|
||||
return options;
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUE7QUFNOUIsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUU7SUFFekIsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLFFBQVEsSUFBSSxPQUFPLEdBQUc7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUN0RCxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDN0IsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsT0FBaUIsRUFBRSxJQUFTLEVBQVksRUFBRTtJQUU1RCxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDLENBQUEifQ==
|
||||
1
packages/cache/dist/types.d.ts
vendored
Normal file
1
packages/cache/dist/types.d.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export {};
|
||||
2
packages/cache/dist/types.js
vendored
Normal file
2
packages/cache/dist/types.js
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export {};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
||||
2258
packages/cache/package-lock.json
generated
vendored
Normal file
2258
packages/cache/package-lock.json
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
46
packages/cache/package.json
vendored
Normal file
46
packages/cache/package.json
vendored
Normal file
@ -0,0 +1,46 @@
|
||||
{
|
||||
"name": "@polymech/osr-cache",
|
||||
"description": "",
|
||||
"version": "0.4.8",
|
||||
"typings": "dist/index.d.ts",
|
||||
"type": "module",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"bin": {
|
||||
"osr-cache": "main.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@polymech/commons": "link:..\\commons",
|
||||
"@polymech/core": "link:..\\core",
|
||||
"@polymech/fs": "link:..\\fs",
|
||||
"@polymech/log": "link:..\\log",
|
||||
"@types/node": "^22.10.2",
|
||||
"cacache": "^18.0.3",
|
||||
"md5": "^2.3.0",
|
||||
"ssri": "^10.0.1",
|
||||
"yargs": "^17.7.2"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "tsc; mocha --full-trace mocha \"spec/**/*.spec.js\"",
|
||||
"test-with-coverage": "istanbul cover node_modules/.bin/_mocha -- 'spec/**/*.spec.js'",
|
||||
"lint": "tslint --project=./tsconfig.json",
|
||||
"build": "tsc -p .",
|
||||
"dev": "tsc -p . --declaration -w",
|
||||
"typings": "tsc --declaration",
|
||||
"docs": "npx typedoc src/index.ts",
|
||||
"dev-test-watch": "mocha-typescript-watch"
|
||||
},
|
||||
"homepage": "https://git.osr-plastic.org/osr-plastic/osr-cache",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://git.osr-plastic.org/osr-plastic/osr-cache"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 14.0.0"
|
||||
},
|
||||
"license": "BSD-3-Clause",
|
||||
"keywords": [
|
||||
"typescript"
|
||||
]
|
||||
}
|
||||
3
packages/cache/scripts/link-dev.sh
vendored
Normal file
3
packages/cache/scripts/link-dev.sh
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
npm i ../core/
|
||||
npm i ../fs/
|
||||
npm i ../osr-cli-commons/
|
||||
0
packages/cache/src/.gitignore
vendored
Normal file
0
packages/cache/src/.gitignore
vendored
Normal file
45
packages/cache/src/_cli.ts
vendored
Normal file
45
packages/cache/src/_cli.ts
vendored
Normal file
@ -0,0 +1,45 @@
|
||||
import * as path from 'node:path'
|
||||
import { IOptions } from './options.js'
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
import { logger } from './index.js'
|
||||
|
||||
// tweaks and handlers
|
||||
export const defaults = () => {
|
||||
// default command
|
||||
const DefaultCommand = 'info';
|
||||
if (process.argv.length === 2) {
|
||||
process.argv.push(DefaultCommand);
|
||||
}
|
||||
|
||||
// currently no default handler, display only :
|
||||
process.on('unhandledRejection', (reason: string) => {
|
||||
console.error('Unhandled rejection, reason: ', reason);
|
||||
});
|
||||
};
|
||||
|
||||
export const sanitize = (argv: any): IOptions | boolean => {
|
||||
|
||||
let ret: any = {
|
||||
all: argv.all,
|
||||
src: argv.src,
|
||||
types: argv.types,
|
||||
dst: argv.dst,
|
||||
depth:argv.dept
|
||||
}
|
||||
|
||||
if (argv.cwd) {
|
||||
ret.cwd = path.resolve(argv.cwd);
|
||||
if (!exists((ret.cwd))) {
|
||||
logger.error(`Invalid working directory ${argv.cwd}`);
|
||||
}
|
||||
} else {
|
||||
ret.cwd = process.cwd();
|
||||
}
|
||||
|
||||
ret = {
|
||||
...ret,
|
||||
...{ variables: {} }
|
||||
}
|
||||
|
||||
return ret;
|
||||
};
|
||||
34
packages/cache/src/commands/info.ts
vendored
Normal file
34
packages/cache/src/commands/info.ts
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
import * as CLI from 'yargs'
|
||||
import * as path from 'path'
|
||||
import { substitute } from '@polymech/core/strings'
|
||||
|
||||
import { CONFIG_DEFAULT, DEFAULT_ROOTS } from '@polymech/commons'
|
||||
|
||||
import { logger } from '../index.js'
|
||||
import { defaults } from '../_cli.js'
|
||||
|
||||
const defaultOptions = (yargs: CLI.Argv) => {
|
||||
return yargs.option('debug', {
|
||||
default: 'false',
|
||||
describe: 'debug messages'
|
||||
}).option('env_key', {
|
||||
default: 'OSR-CONFIG',
|
||||
describe: 'Environment key to the config path'
|
||||
})
|
||||
}
|
||||
let options = (yargs: CLI.Argv) => defaultOptions(yargs)
|
||||
export const register = (cli: CLI.Argv) => {
|
||||
return cli.command('user', 'User commands, call with <verb>', options, async (argv: CLI.Arguments) => {
|
||||
defaults()
|
||||
if (argv.help) { return }
|
||||
const args: any = argv
|
||||
const config = CONFIG_DEFAULT(args.env_key)
|
||||
const opts = {
|
||||
verb: argv.verb,
|
||||
src: path.resolve(substitute(args.src, DEFAULT_ROOTS)),
|
||||
dst: path.resolve(args.dst)
|
||||
}
|
||||
logger.debug(`Reading OSR Config with key "${argv.env_key}"`, opts)
|
||||
|
||||
})
|
||||
}
|
||||
57
packages/cache/src/commands/test.ts
vendored
Normal file
57
packages/cache/src/commands/test.ts
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
import * as CLI from 'yargs'
|
||||
import * as path from 'path'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
import { substitute } from '@polymech/core/strings'
|
||||
import { DEFAULT_ROOTS } from '@polymech/commons'
|
||||
import { logger } from '../index.js'
|
||||
import { defaults } from '../_cli.js'
|
||||
import { get_cached, set_cached } from '../lib/index.js'
|
||||
|
||||
const defaultOptions = (yargs: CLI.Argv) => {
|
||||
return yargs.option('debug', {
|
||||
default: 'false',
|
||||
describe: 'debug messages'
|
||||
}).option('verb', {
|
||||
description: 'test verb : file|folder'
|
||||
}).option('src', {
|
||||
description: 'raw source file',
|
||||
default: './tests/src.json'
|
||||
}).option('dst', {
|
||||
description: 'dst output path, supports XLS|CSV|HTML',
|
||||
default: './tests/dst.json'
|
||||
}).option('env_key', {
|
||||
default: 'OSR-CONFIG',
|
||||
describe: 'Environment key to the config path'
|
||||
});
|
||||
};
|
||||
|
||||
let options = (yargs: CLI.Argv) => defaultOptions(yargs);
|
||||
|
||||
|
||||
export const register = (cli: CLI.Argv) => {
|
||||
return cli.command('test <verb>', 'Test commands', options, async (argv: CLI.Arguments) => {
|
||||
|
||||
defaults();
|
||||
if (argv.help) { return; }
|
||||
const args: any = argv;
|
||||
|
||||
const opts = {
|
||||
verb: argv.verb,
|
||||
src: path.resolve(substitute(args.src, DEFAULT_ROOTS)),
|
||||
dst: path.resolve(substitute(args.dst, DEFAULT_ROOTS))
|
||||
};
|
||||
|
||||
if (!opts.verb) {
|
||||
logger.error('No verb specified');
|
||||
return;
|
||||
}
|
||||
|
||||
if (opts.verb === 'file') {
|
||||
|
||||
const src = read(opts.src, 'json');
|
||||
const hashed = await get_cached(opts.src, { a: 1 }, 'tests')
|
||||
const shashed = await set_cached(opts.src, { a: 1 }, 'tests', src)
|
||||
}
|
||||
logger.debug(`Reading OSR Config with key "${argv.env_key}"`, opts);
|
||||
});
|
||||
};
|
||||
1
packages/cache/src/constants.ts
vendored
Normal file
1
packages/cache/src/constants.ts
vendored
Normal file
@ -0,0 +1 @@
|
||||
export const MODULE_NAME = `OSR-CACHE`;
|
||||
6
packages/cache/src/index.ts
vendored
Normal file
6
packages/cache/src/index.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
import { MODULE_NAME } from './constants.js'
|
||||
export * from './lib/index.js'
|
||||
import { createLogger } from '@polymech/log'
|
||||
export { sanitize } from './_cli.js'
|
||||
export { MODULE_NAME } from './constants.js'
|
||||
export const logger: any = createLogger(MODULE_NAME)
|
||||
158
packages/cache/src/lib/index.ts
vendored
Normal file
158
packages/cache/src/lib/index.ts
vendored
Normal file
@ -0,0 +1,158 @@
|
||||
import { resolve, join } from 'path'
|
||||
import * as ssri from 'ssri'
|
||||
import { get as cache_get, put as cache_put } from 'cacache'
|
||||
|
||||
import { sync as exists } from '@polymech/fs/exists'
|
||||
import { sync as mkdir } from '@polymech/fs/dir'
|
||||
|
||||
import { isString, isObject, isArray } from '@polymech/core/primitives'
|
||||
import { OSR_CACHE } from '@polymech/commons'
|
||||
import { sync as read } from '@polymech/fs/read'
|
||||
import { logger } from '../index.js'
|
||||
|
||||
export const cache_path = (_namespace: string) => `${resolve(join(OSR_CACHE(), _namespace))}`
|
||||
export const fileAsBuffer = (path: string) => read(path, 'buffer') as Buffer
|
||||
|
||||
export const file_hash = (path: string, opts: any = {}, namespace: string = "nons") => {
|
||||
const hash = { ...opts, ns: namespace }
|
||||
delete hash['debug']
|
||||
delete hash['verbose']
|
||||
const buffer = fileAsBuffer(path) as Buffer
|
||||
const ibuffer = Buffer.concat([buffer, Buffer.from(JSON.stringify(hash))])
|
||||
const ret = ssri.fromData(ibuffer).toString()
|
||||
return ret
|
||||
}
|
||||
|
||||
export const object_hash = (opts: any = {}, namespace: string = "nons") => {
|
||||
const hash = { ...opts, ns: namespace }
|
||||
const ibuffer = Buffer.concat([Buffer.from(JSON.stringify(hash))])
|
||||
const ret = ssri.fromData(ibuffer).toString()
|
||||
return ret
|
||||
}
|
||||
|
||||
export const file_name_hash = (path: string, opts: any = {}, namespace: string = "nons") => {
|
||||
const ibuffer = Buffer.concat([Buffer.from(path), Buffer.from(JSON.stringify({ ...opts, ns: namespace }))])
|
||||
const ret = ssri.fromData(ibuffer).toString()
|
||||
return ret
|
||||
}
|
||||
|
||||
export const set_cached = async (path: string, opts: any = {}, namespace: string = "nons", data: any, metadata: any = {}) => {
|
||||
const c_integrity = file_hash(path, opts, namespace)
|
||||
const c_dir = cache_path(namespace)
|
||||
if (!exists(c_dir)) {
|
||||
mkdir(c_dir)
|
||||
}
|
||||
if (!Buffer.isBuffer(data)) {
|
||||
if (!isString(data) && (isArray(data) || isObject(data))) {
|
||||
data = JSON.stringify(data, null, 2)
|
||||
}
|
||||
}
|
||||
return await cache_put(c_dir, c_integrity, data, {
|
||||
metadata: {
|
||||
path: path,
|
||||
hash: c_integrity,
|
||||
...metadata
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export const set_cached_object = async (opts: any = {}, namespace: string = "nons", data: any, metadata: any = {}) => {
|
||||
const c_integrity = object_hash(opts, namespace)
|
||||
const c_dir = cache_path(namespace)
|
||||
if (!exists(c_dir)) {
|
||||
mkdir(c_dir)
|
||||
}
|
||||
if (!Buffer.isBuffer(data)) {
|
||||
if (!isString(data) && (isArray(data) || isObject(data))) {
|
||||
try {
|
||||
data = JSON.stringify(data, null, 2)
|
||||
} catch (e) {
|
||||
logger.error(`osr-cache :: error serializing object: ${e}`, opts)
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
return await cache_put(c_dir, c_integrity, data, {
|
||||
metadata: {
|
||||
hash: c_integrity,
|
||||
...metadata
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export const get_cache_key = async (path: string, opts: any = {}, namespace: string = "nons") => {
|
||||
const c_integrity = file_hash(path, opts, namespace)
|
||||
const c_dir = cache_path(namespace)
|
||||
try {
|
||||
const cached = await cache_get.info(c_dir, c_integrity)
|
||||
if (cached) {
|
||||
return cached
|
||||
}
|
||||
} catch (e) {
|
||||
logger.error(e)
|
||||
}
|
||||
}
|
||||
export const get_cached = async (path: string, opts: any = {}, namespace: string = "nons") => {
|
||||
const c_integrity = file_hash(path, opts, namespace)
|
||||
const c_dir = cache_path(namespace)
|
||||
if (!exists(c_dir)) {
|
||||
mkdir(c_dir)
|
||||
}
|
||||
let data: any
|
||||
try {
|
||||
const cached = await cache_get.info(c_dir, c_integrity)
|
||||
if (cached) {
|
||||
data = ((await cache_get(c_dir, c_integrity)).data as Buffer).toString()
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
logger.error(e)
|
||||
}
|
||||
return data
|
||||
}
|
||||
|
||||
export const get_cached_object = async (opts: any = {}, namespace: string = "nons") => {
|
||||
const c_integrity = object_hash(opts, namespace)
|
||||
const c_dir = cache_path(namespace)
|
||||
if (!exists(c_dir)) {
|
||||
mkdir(c_dir)
|
||||
}
|
||||
let data: any
|
||||
try {
|
||||
const cached = await cache_get.info(c_dir, c_integrity)
|
||||
if (cached) {
|
||||
data = ((await cache_get(c_dir, c_integrity)).data as Buffer).toString()
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
logger.error(e)
|
||||
}
|
||||
|
||||
if (data && isString(data)) {
|
||||
try {
|
||||
data = JSON.parse(data)
|
||||
} catch (e) {
|
||||
logger.error(`Error parsing cached object: ${e}`, opts)
|
||||
}
|
||||
}
|
||||
return data
|
||||
}
|
||||
|
||||
export const get_path_cached = async (path: string, opts: any = {}, namespace: string = "nons") => {
|
||||
const c_integrity = file_hash(path, opts, namespace)
|
||||
const c_dir = cache_path(namespace)
|
||||
if (!exists(c_dir)) {
|
||||
mkdir(c_dir)
|
||||
}
|
||||
let data: any
|
||||
try {
|
||||
const cached = await cache_get.info(c_dir, c_integrity)
|
||||
if (cached) {
|
||||
return cached.path
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
logger.error(e)
|
||||
}
|
||||
return data
|
||||
}
|
||||
15
packages/cache/src/main.ts
vendored
Normal file
15
packages/cache/src/main.ts
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env node
|
||||
import { defaults } from './_cli.js'; defaults()
|
||||
import * as cli from 'yargs'
|
||||
|
||||
import { register as registerInfo } from './commands/info.js'; registerInfo(cli)
|
||||
import { register as registerTest } from './commands/test.js'; registerTest(cli)
|
||||
|
||||
const argv: any = cli.argv;
|
||||
|
||||
if (argv.help) {
|
||||
cli.showHelp();
|
||||
process.exit();
|
||||
} else if (argv.v || argv.version) {
|
||||
process.exit();
|
||||
}
|
||||
20
packages/cache/src/options.ts
vendored
Normal file
20
packages/cache/src/options.ts
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
export * from './lib/index.js'
|
||||
|
||||
export interface IOptions {
|
||||
|
||||
}
|
||||
|
||||
export const clone = (obj) => {
|
||||
|
||||
if (null == obj || "object" != typeof obj) return obj;
|
||||
var copy = obj.constructor();
|
||||
for (var attr in obj) {
|
||||
if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr];
|
||||
}
|
||||
return copy;
|
||||
}
|
||||
|
||||
export const parse = (options: IOptions, argv: any): IOptions => {
|
||||
|
||||
return options;
|
||||
}
|
||||
0
packages/cache/tests/dst.json
vendored
Normal file
0
packages/cache/tests/dst.json
vendored
Normal file
5
packages/cache/tests/src.json
vendored
Normal file
5
packages/cache/tests/src.json
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"number": 4,
|
||||
"string": "foo",
|
||||
"boolean": true
|
||||
}
|
||||
23
packages/cache/tsconfig.json
vendored
Normal file
23
packages/cache/tsconfig.json
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"extends": "../typescript-config/base.json",
|
||||
"include": [
|
||||
"src/**/*.ts"
|
||||
],
|
||||
"files": [
|
||||
"src/index.ts"
|
||||
],
|
||||
"compilerOptions": {
|
||||
"strictNullChecks": false,
|
||||
"allowJs": true,
|
||||
"baseUrl": ".",
|
||||
"declarationDir": "./dist",
|
||||
"outDir": "./dist",
|
||||
"inlineSourceMap": true,
|
||||
"preserveConstEnums": true,
|
||||
"paths": {
|
||||
"@/*": [
|
||||
"src/*"
|
||||
]
|
||||
}
|
||||
},
|
||||
}
|
||||
12
packages/cache/tsup.config.ts
vendored
Normal file
12
packages/cache/tsup.config.ts
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
import { defineConfig } from "tsup";
|
||||
|
||||
export default defineConfig((options) => ({
|
||||
entryPoints: [
|
||||
"src/*.ts"
|
||||
],
|
||||
format: ["cjs", "esm"],
|
||||
dts: true,
|
||||
sourcemap: true,
|
||||
...options,
|
||||
bundle: false
|
||||
}));
|
||||
1
packages/commons/dist/fs.d.ts
vendored
1
packages/commons/dist/fs.d.ts
vendored
@ -1,4 +1,3 @@
|
||||
export declare const GLOB_GROUP_PATTERN: RegExp;
|
||||
export declare const UNC_REGEX: RegExp;
|
||||
export declare const WIN32_PATH_REGEX: RegExp;
|
||||
export declare const isFile: (src: string) => boolean;
|
||||
|
||||
15
packages/commons/dist/fs.js
vendored
15
packages/commons/dist/fs.js
vendored
@ -1,22 +1,9 @@
|
||||
import * as fs from 'fs';
|
||||
// https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#namespaces
|
||||
// https://github.com/isaacs/node-glob/blob/main/src/pattern.ts
|
||||
export const GLOB_GROUP_PATTERN = /[!*+?@]\(.*\)/;
|
||||
export const UNC_REGEX = /^[\\\/]{2,}[^\\\/]+[\\\/]+[^\\\/]+/;
|
||||
export const WIN32_PATH_REGEX = /^([a-z]:)?[\\\/]/i;
|
||||
import { is_windows } from './os.js';
|
||||
/*
|
||||
const parseGlob = require('parse-glob')
|
||||
|
||||
export const getExtensions = (glob: string) => {
|
||||
const match = glob.match(GLOB_GROUP_PATTERN);
|
||||
if (match) {
|
||||
return glob.substring((match.index || 0) + 2, glob.lastIndexOf(')')).split('|')
|
||||
} else {
|
||||
return [parseGlob(glob).path.ext]
|
||||
}
|
||||
}
|
||||
*/
|
||||
export const isFile = (src) => {
|
||||
let srcIsFile = false;
|
||||
try {
|
||||
@ -46,4 +33,4 @@ const is_absolute_win32 = (fp) => {
|
||||
return !is_relative_win32(fp);
|
||||
};
|
||||
export const is_absolute = (fp) => is_windows() ? is_absolute_win32(fp) : is_absolute_posix(fp);
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFFeEIsa0ZBQWtGO0FBQ2xGLCtEQUErRDtBQUMvRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxlQUFlLENBQUE7QUFDakQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLG9DQUFvQyxDQUFBO0FBQzdELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLG1CQUFtQixDQUFBO0FBRW5ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFcEM7Ozs7Ozs7Ozs7O0VBV0U7QUFFRixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUNsQyxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDdEIsSUFBSTtRQUNBLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO0tBQ3pDO0lBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztJQUNmLE9BQU8sU0FBUyxDQUFBO0FBQ3BCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO0lBQ3BDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztJQUN4QixJQUFJO1FBQ0EsV0FBVyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7S0FDaEQ7SUFBQyxPQUFPLENBQUMsRUFBRSxHQUFHO0lBQ2YsT0FBTyxXQUFXLENBQUM7QUFDdkIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ25GLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFBO0FBQ3RELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUM3QixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQzlFLE9BQU8sSUFBSSxDQUFBO0tBQ2Q7SUFDRCxvQ0FBb0M7SUFDcEMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLEVBQUU7UUFDM0IsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUNqQyxDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUEifQ==
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFFeEIsa0ZBQWtGO0FBQ2xGLCtEQUErRDtBQUUvRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsb0NBQW9DLENBQUE7QUFDN0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUE7QUFFbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUdwQyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUNsQyxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDdEIsSUFBSTtRQUNBLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO0tBQ3pDO0lBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztJQUNmLE9BQU8sU0FBUyxDQUFBO0FBQ3BCLENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO0lBQ3BDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztJQUN4QixJQUFJO1FBQ0EsV0FBVyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7S0FDaEQ7SUFBQyxPQUFPLENBQUMsRUFBRSxHQUFHO0lBQ2YsT0FBTyxXQUFXLENBQUM7QUFDdkIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ25GLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFBO0FBQ3RELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUM3QixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQzlFLE9BQU8sSUFBSSxDQUFBO0tBQ2Q7SUFDRCxvQ0FBb0M7SUFDcEMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLEVBQUU7UUFDM0IsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUNqQyxDQUFDLENBQUE7QUFDRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUEifQ==
|
||||
1
packages/commons/dist/types.d.ts
vendored
1
packages/commons/dist/types.d.ts
vendored
@ -261,3 +261,4 @@ export interface IDiscourseUser {
|
||||
post_count: number;
|
||||
}
|
||||
export * from './types_kbot.js';
|
||||
export * from './types_common.js';
|
||||
|
||||
3
packages/commons/dist/types.js
vendored
3
packages/commons/dist/types.js
vendored
@ -1,2 +1,3 @@
|
||||
export * from './types_kbot.js';
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeVdJLGNBQWMsaUJBQWlCLENBQUEifQ==
|
||||
export * from './types_common.js';
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeVdJLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYyxtQkFBbUIsQ0FBQSJ9
|
||||
@ -2,24 +2,12 @@ import * as fs from 'fs'
|
||||
|
||||
// https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#namespaces
|
||||
// https://github.com/isaacs/node-glob/blob/main/src/pattern.ts
|
||||
export const GLOB_GROUP_PATTERN = /[!*+?@]\(.*\)/
|
||||
|
||||
export const UNC_REGEX = /^[\\\/]{2,}[^\\\/]+[\\\/]+[^\\\/]+/
|
||||
export const WIN32_PATH_REGEX = /^([a-z]:)?[\\\/]/i
|
||||
|
||||
import { is_windows } from './os.js'
|
||||
|
||||
/*
|
||||
const parseGlob = require('parse-glob')
|
||||
|
||||
export const getExtensions = (glob: string) => {
|
||||
const match = glob.match(GLOB_GROUP_PATTERN);
|
||||
if (match) {
|
||||
return glob.substring((match.index || 0) + 2, glob.lastIndexOf(')')).split('|')
|
||||
} else {
|
||||
return [parseGlob(glob).path.ext]
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
export const isFile = (src: string) => {
|
||||
let srcIsFile = false;
|
||||
|
||||
@ -360,5 +360,6 @@ export interface IDiscourseUser {
|
||||
}
|
||||
|
||||
export * from './types_kbot.js'
|
||||
export * from './types_common.js'
|
||||
|
||||
|
||||
@ -18,6 +18,10 @@
|
||||
"./exists": {
|
||||
"import": "./dist/exists.js",
|
||||
"require": "./dist/exists.cjs"
|
||||
},
|
||||
"./dir": {
|
||||
"import": "./dist/dir.js",
|
||||
"require": "./dist/dir.cjs"
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
|
||||
4
packages/i18n/dist/lib/translate.js
vendored
4
packages/i18n/dist/lib/translate.js
vendored
File diff suppressed because one or more lines are too long
@ -15,6 +15,7 @@
|
||||
"@polymech/core": "link:..\\core",
|
||||
"@polymech/fs": "link:..\\fs",
|
||||
"@polymech/log": "link:..\\log",
|
||||
"@polymech/osr-cache": "link:..\\cache",
|
||||
"@types/html-minifier-terser": "^7.0.2",
|
||||
"@types/node": "^20.14.9",
|
||||
"axios": "^1.7.9",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import * as path from 'path'
|
||||
import { JSONPath } from 'jsonpath-plus'
|
||||
import { createHash } from 'crypto'
|
||||
import { get_cached, set_cached } from '@polymech/osr-cache/lib'
|
||||
import { get_cached, set_cached } from '@polymech/osr-cache'
|
||||
import { OSR_CACHE } from '@polymech/commons'
|
||||
import { CONFIG_DEFAULT } from '@polymech/commons'
|
||||
import { resolve } from '@polymech/commons'
|
||||
|
||||
Loading…
Reference in New Issue
Block a user