@liquidmetal-ai/drizzle 0.2.12 → 0.3.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/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @liquidmetal-ai/drizzle
2
2
 
3
+ ## 0.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Update to 0.2.1
8
+
9
+ ### Patch Changes
10
+
11
+ - Added support for sandboxes.
12
+ - Automate version stamping and break dependency on common.
13
+ - Include templates in raindrop.
14
+ - Introduces env variable checking and the --resume flag for resuming deploys.
15
+ - Raindrop now also retrieves and shows organization ID in build list.
16
+
3
17
  ## 0.2.11
4
18
 
5
19
  ### Patch Changes
package/dist/ulid.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export declare function monotonic(): () => string;
2
+ export declare const ulid: () => string;
3
+ export declare function ulidBatch(count: number): string[];
4
+ export declare function decodeTimeToMilliseconds(id: string): number;
5
+ export declare function decodeTimeToDate(id: string): Date;
6
+ export declare function incrementBase32(str: string): string;
7
+ //# sourceMappingURL=ulid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ulid.d.ts","sourceRoot":"","sources":["../src/ulid.ts"],"names":[],"mappings":"AAsBA,wBAAgB,SAAS,IAAI,MAAM,MAAM,CAaxC;AAED,eAAO,MAAM,IAAI,QAfkB,MAeJ,CAAC;AAEhC,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAMjD;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAa3D;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEjD;AAwBD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAqBnD"}
package/dist/ulid.js ADDED
@@ -0,0 +1,107 @@
1
+ // This gives monotonic ULIDs that are sortable by time and unique across
2
+ // multiple instances of the application. The ids are 26 characters long
3
+ // and contain a 10 character timestamp followed by 16 random characters.
4
+ // The timestamp is encoded in base32 and the random characters are also
5
+ // encoded in base32. The timestamp is the number of milliseconds since
6
+ // the Unix epoch and the random characters are generated using the
7
+ // crypto.getRandomValues function that Cloudflare supports.
8
+ //
9
+ // See https://developers.cloudflare.com/workers/runtime-apis/web-crypto/
10
+ // See https://github.com/ulid/spec
11
+ //
12
+ // This has been cross-checked against the reference implementation but
13
+ // the reference implementation uses a different / configurable random number
14
+ // generator, and supports non-monotonic ids. This implementation is simpler
15
+ // and only supports monotonic ids, and Cloudflare's platform.
16
+ const BASE32_ENCODING = '0123456789abcdefghjkmnpqrstvwxyz';
17
+ const ENCODING_LEN = BASE32_ENCODING.length;
18
+ const TIME_MAX = Math.pow(2, 48) - 1;
19
+ const TIME_LEN = 10;
20
+ const RANDOM_LEN = 16;
21
+ export function monotonic() {
22
+ let lastTime = 0;
23
+ let lastRandom;
24
+ return function ulid() {
25
+ const seed = new Date().getTime();
26
+ if (seed <= lastTime) {
27
+ lastRandom = incrementBase32(lastRandom);
28
+ return encodeTime(lastTime) + lastRandom;
29
+ }
30
+ lastTime = seed;
31
+ lastRandom = encodeRandom();
32
+ return encodeTime(seed) + lastRandom;
33
+ };
34
+ }
35
+ export const ulid = monotonic();
36
+ export function ulidBatch(count) {
37
+ const batch = [];
38
+ for (let i = 0; i < count; i++) {
39
+ batch.push(ulid());
40
+ }
41
+ return batch;
42
+ }
43
+ export function decodeTimeToMilliseconds(id) {
44
+ if (id.length !== TIME_LEN + RANDOM_LEN)
45
+ throw new Error('malformed ulid');
46
+ const time = id
47
+ .substring(0, TIME_LEN)
48
+ .split('')
49
+ .reverse()
50
+ .reduce((carry, char, index) => {
51
+ const encodingIndex = BASE32_ENCODING.indexOf(char);
52
+ if (encodingIndex === -1)
53
+ throw new Error('invalid character found: ' + char);
54
+ return (carry += encodingIndex * Math.pow(ENCODING_LEN, index));
55
+ }, 0);
56
+ if (time > TIME_MAX)
57
+ throw new Error('malformed ulid, timestamp too large');
58
+ return time;
59
+ }
60
+ export function decodeTimeToDate(id) {
61
+ return new Date(decodeTimeToMilliseconds(id));
62
+ }
63
+ function encodeRandom() {
64
+ const bytes = crypto.getRandomValues(new Uint8Array(RANDOM_LEN));
65
+ let str = '';
66
+ for (let i = 0; i < RANDOM_LEN; i++) {
67
+ str = str + BASE32_ENCODING[bytes[i] % ENCODING_LEN];
68
+ }
69
+ return str;
70
+ }
71
+ function encodeTime(ms) {
72
+ if (ms > TIME_MAX)
73
+ throw new Error('cannot encode time greater than ' + TIME_MAX);
74
+ if (ms < 0)
75
+ throw new Error('time must be positive');
76
+ let mod;
77
+ let str = '';
78
+ for (let len = TIME_LEN; len > 0; len--) {
79
+ mod = ms % ENCODING_LEN;
80
+ str = BASE32_ENCODING[mod] + str;
81
+ ms = (ms - mod) / ENCODING_LEN;
82
+ }
83
+ return str;
84
+ }
85
+ export function incrementBase32(str) {
86
+ function replaceCharAt(str, index, char) {
87
+ if (index > str.length - 1)
88
+ return str;
89
+ return str.substring(0, index) + char + str.substring(index + 1);
90
+ }
91
+ const maxCharIndex = ENCODING_LEN - 1;
92
+ let index = str ? str.length : 0;
93
+ let char;
94
+ let charIndex;
95
+ while (index-- >= 0) {
96
+ char = str[index];
97
+ charIndex = BASE32_ENCODING.indexOf(char);
98
+ if (charIndex === -1)
99
+ throw new Error('incorrectly encoded string');
100
+ if (charIndex === maxCharIndex) {
101
+ str = replaceCharAt(str, index, BASE32_ENCODING[0]);
102
+ continue;
103
+ }
104
+ return replaceCharAt(str, index, BASE32_ENCODING[charIndex + 1]);
105
+ }
106
+ return str;
107
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ulid.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ulid.test.d.ts","sourceRoot":"","sources":["../src/ulid.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,60 @@
1
+ import { describe, expect, it, test } from 'vitest';
2
+ import { decodeTimeToDate, decodeTimeToMilliseconds, incrementBase32, ulid, ulidBatch } from './ulid';
3
+ const BASE32_ENCODING = ' 0123456789abcdefghjkmnpqrstvwxyz';
4
+ const TIME_MAX = Math.pow(2, 48) - 1;
5
+ const TIME_LEN = 10;
6
+ const RANDOM_LEN = 16;
7
+ const ULID_LEN = TIME_LEN + RANDOM_LEN;
8
+ test('ulid is valid', () => {
9
+ const id = ulid();
10
+ expect(id.length).toBe(TIME_LEN + RANDOM_LEN);
11
+ for (let i = 0; i < ULID_LEN; i++) {
12
+ expect(BASE32_ENCODING.includes(id[i])).toBe(true);
13
+ }
14
+ });
15
+ test('ulidBatch are all valid', () => {
16
+ const ids = ulidBatch(10);
17
+ expect(ids.length).toBe(10);
18
+ for (const id of ids) {
19
+ expect(id.length).toBe(ULID_LEN);
20
+ for (let i = 0; i < ULID_LEN; i++) {
21
+ expect(BASE32_ENCODING.includes(id[i])).toBe(true);
22
+ }
23
+ }
24
+ });
25
+ test('all ids are unique', () => {
26
+ const ids = ulidBatch(1000);
27
+ const set = new Set(ids);
28
+ expect(set.size).toBe(ids.length);
29
+ });
30
+ test('time is monotonic', () => {
31
+ const ids = ulidBatch(1000);
32
+ let lastTime = 0;
33
+ for (const id of ids) {
34
+ const time = decodeTimeToMilliseconds(id);
35
+ expect(time).toBeGreaterThanOrEqual(lastTime);
36
+ lastTime = time;
37
+ }
38
+ });
39
+ test('time less than max and greater than test start time', () => {
40
+ const now = new Date().getTime();
41
+ const id = ulid();
42
+ const time = decodeTimeToMilliseconds(id);
43
+ expect(time).toBeGreaterThanOrEqual(now);
44
+ expect(time).toBeLessThanOrEqual(TIME_MAX);
45
+ });
46
+ test('decoding to date', () => {
47
+ const now = new Date().getTime();
48
+ const id = ulid();
49
+ const time = decodeTimeToDate(id).getTime();
50
+ expect(time).toBeGreaterThanOrEqual(now);
51
+ expect(time).toBeLessThanOrEqual(TIME_MAX);
52
+ });
53
+ describe('incrementBase32', () => {
54
+ it('increments single-digit strings', () => {
55
+ expect(incrementBase32('0')).toBe('1');
56
+ });
57
+ it('increments multiple-digit strings', () => {
58
+ expect(incrementBase32('aaaaa')).toBe('aaaab');
59
+ });
60
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liquidmetal-ai/drizzle",
3
- "version": "0.2.12",
3
+ "version": "0.3.0",
4
4
  "description": "Raindrop core operational libraries",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -0,0 +1,68 @@
1
+ import { describe, expect, it, test } from 'vitest';
2
+ import { decodeTimeToDate, decodeTimeToMilliseconds, incrementBase32, ulid, ulidBatch } from './ulid';
3
+
4
+ const BASE32_ENCODING = ' 0123456789abcdefghjkmnpqrstvwxyz';
5
+ const TIME_MAX = Math.pow(2, 48) - 1;
6
+ const TIME_LEN = 10;
7
+ const RANDOM_LEN = 16;
8
+ const ULID_LEN = TIME_LEN + RANDOM_LEN;
9
+
10
+ test('ulid is valid', () => {
11
+ const id = ulid();
12
+ expect(id.length).toBe(TIME_LEN + RANDOM_LEN);
13
+ for (let i = 0; i < ULID_LEN; i++) {
14
+ expect(BASE32_ENCODING.includes(id[i]!)).toBe(true);
15
+ }
16
+ });
17
+
18
+ test('ulidBatch are all valid', () => {
19
+ const ids = ulidBatch(10);
20
+ expect(ids.length).toBe(10);
21
+ for (const id of ids) {
22
+ expect(id.length).toBe(ULID_LEN);
23
+ for (let i = 0; i < ULID_LEN; i++) {
24
+ expect(BASE32_ENCODING.includes(id[i]!)).toBe(true);
25
+ }
26
+ }
27
+ });
28
+
29
+ test('all ids are unique', () => {
30
+ const ids = ulidBatch(1000);
31
+ const set = new Set(ids);
32
+ expect(set.size).toBe(ids.length);
33
+ });
34
+
35
+ test('time is monotonic', () => {
36
+ const ids = ulidBatch(1000);
37
+ let lastTime = 0;
38
+ for (const id of ids) {
39
+ const time = decodeTimeToMilliseconds(id);
40
+ expect(time).toBeGreaterThanOrEqual(lastTime);
41
+ lastTime = time;
42
+ }
43
+ });
44
+
45
+ test('time less than max and greater than test start time', () => {
46
+ const now = new Date().getTime();
47
+ const id = ulid();
48
+ const time = decodeTimeToMilliseconds(id);
49
+ expect(time).toBeGreaterThanOrEqual(now);
50
+ expect(time).toBeLessThanOrEqual(TIME_MAX);
51
+ });
52
+
53
+ test('decoding to date', () => {
54
+ const now = new Date().getTime();
55
+ const id = ulid();
56
+ const time = decodeTimeToDate(id).getTime();
57
+ expect(time).toBeGreaterThanOrEqual(now);
58
+ expect(time).toBeLessThanOrEqual(TIME_MAX);
59
+ });
60
+
61
+ describe('incrementBase32', () => {
62
+ it('increments single-digit strings', () => {
63
+ expect(incrementBase32('0')).toBe('1');
64
+ });
65
+ it('increments multiple-digit strings', () => {
66
+ expect(incrementBase32('aaaaa')).toBe('aaaab');
67
+ });
68
+ });
package/src/ulid.ts ADDED
@@ -0,0 +1,110 @@
1
+ // This gives monotonic ULIDs that are sortable by time and unique across
2
+ // multiple instances of the application. The ids are 26 characters long
3
+ // and contain a 10 character timestamp followed by 16 random characters.
4
+ // The timestamp is encoded in base32 and the random characters are also
5
+ // encoded in base32. The timestamp is the number of milliseconds since
6
+ // the Unix epoch and the random characters are generated using the
7
+ // crypto.getRandomValues function that Cloudflare supports.
8
+ //
9
+ // See https://developers.cloudflare.com/workers/runtime-apis/web-crypto/
10
+ // See https://github.com/ulid/spec
11
+ //
12
+ // This has been cross-checked against the reference implementation but
13
+ // the reference implementation uses a different / configurable random number
14
+ // generator, and supports non-monotonic ids. This implementation is simpler
15
+ // and only supports monotonic ids, and Cloudflare's platform.
16
+
17
+ const BASE32_ENCODING = '0123456789abcdefghjkmnpqrstvwxyz';
18
+ const ENCODING_LEN = BASE32_ENCODING.length;
19
+ const TIME_MAX = Math.pow(2, 48) - 1;
20
+ const TIME_LEN = 10;
21
+ const RANDOM_LEN = 16;
22
+
23
+ export function monotonic(): () => string {
24
+ let lastTime: number = 0;
25
+ let lastRandom: string;
26
+ return function ulid(): string {
27
+ const seed: number = new Date().getTime();
28
+ if (seed <= lastTime) {
29
+ lastRandom = incrementBase32(lastRandom);
30
+ return encodeTime(lastTime) + lastRandom;
31
+ }
32
+ lastTime = seed;
33
+ lastRandom = encodeRandom();
34
+ return encodeTime(seed) + lastRandom;
35
+ };
36
+ }
37
+
38
+ export const ulid = monotonic();
39
+
40
+ export function ulidBatch(count: number): string[] {
41
+ const batch = [];
42
+ for (let i = 0; i < count; i++) {
43
+ batch.push(ulid());
44
+ }
45
+ return batch;
46
+ }
47
+
48
+ export function decodeTimeToMilliseconds(id: string): number {
49
+ if (id.length !== TIME_LEN + RANDOM_LEN) throw new Error('malformed ulid');
50
+ const time = id
51
+ .substring(0, TIME_LEN)
52
+ .split('')
53
+ .reverse()
54
+ .reduce((carry, char, index) => {
55
+ const encodingIndex = BASE32_ENCODING.indexOf(char);
56
+ if (encodingIndex === -1) throw new Error('invalid character found: ' + char);
57
+ return (carry += encodingIndex * Math.pow(ENCODING_LEN, index));
58
+ }, 0);
59
+ if (time > TIME_MAX) throw new Error('malformed ulid, timestamp too large');
60
+ return time;
61
+ }
62
+
63
+ export function decodeTimeToDate(id: string): Date {
64
+ return new Date(decodeTimeToMilliseconds(id));
65
+ }
66
+
67
+ function encodeRandom(): string {
68
+ const bytes: Uint8Array = crypto.getRandomValues(new Uint8Array(RANDOM_LEN)) as Uint8Array;
69
+ let str = '';
70
+ for (let i = 0; i < RANDOM_LEN; i++) {
71
+ str = str + BASE32_ENCODING[bytes[i]! % ENCODING_LEN];
72
+ }
73
+ return str;
74
+ }
75
+
76
+ function encodeTime(ms: number): string {
77
+ if (ms > TIME_MAX) throw new Error('cannot encode time greater than ' + TIME_MAX);
78
+ if (ms < 0) throw new Error('time must be positive');
79
+ let mod;
80
+ let str = '';
81
+ for (let len = TIME_LEN; len > 0; len--) {
82
+ mod = ms % ENCODING_LEN;
83
+ str = BASE32_ENCODING[mod]! + str;
84
+ ms = (ms - mod) / ENCODING_LEN;
85
+ }
86
+ return str;
87
+ }
88
+
89
+ export function incrementBase32(str: string): string {
90
+ function replaceCharAt(str: string, index: number, char: string): string {
91
+ if (index > str.length - 1) return str;
92
+ return str.substring(0, index) + char + str.substring(index + 1);
93
+ }
94
+
95
+ const maxCharIndex = ENCODING_LEN - 1;
96
+ let index = str ? str.length : 0;
97
+ let char;
98
+ let charIndex;
99
+ while (index-- >= 0) {
100
+ char = str[index]!;
101
+ charIndex = BASE32_ENCODING.indexOf(char);
102
+ if (charIndex === -1) throw new Error('incorrectly encoded string');
103
+ if (charIndex === maxCharIndex) {
104
+ str = replaceCharAt(str, index, BASE32_ENCODING[0]!);
105
+ continue;
106
+ }
107
+ return replaceCharAt(str, index, BASE32_ENCODING[charIndex + 1]!);
108
+ }
109
+ return str;
110
+ }
@@ -1 +1 @@
1
- {"root":["./src/codestore.test.ts","./src/codestore.ts","./src/logging.test.ts","./src/logging.ts","./src/appify/build.test.ts","./src/appify/build.ts","./src/appify/index.test.ts","./src/appify/index.ts","./src/appify/parse.test.ts","./src/appify/parse.ts","./src/appify/validate.test.ts","./src/appify/validate.ts","./src/liquidmetal/v1alpha1/catalog_pb.ts","./src/liquidmetal/v1alpha1/object_pb.ts","./src/liquidmetal/v1alpha1/rainbow_auth_pb.ts","./src/liquidmetal/v1alpha1/raindrop_pb.ts","./src/liquidmetal/v1alpha1/search_agent_pb.ts","./src/raindrop/index.test.ts","./src/raindrop/index.ts","./src/unsafe/codestore.test.ts","./src/unsafe/codestore.ts","./src/unsafe/framework.test.ts","./src/unsafe/framework.ts"],"version":"5.8.2"}
1
+ {"root":["./src/codestore.test.ts","./src/codestore.ts","./src/logging.test.ts","./src/logging.ts","./src/ulid.test.ts","./src/ulid.ts","./src/appify/build.test.ts","./src/appify/build.ts","./src/appify/index.test.ts","./src/appify/index.ts","./src/appify/parse.test.ts","./src/appify/parse.ts","./src/appify/validate.test.ts","./src/appify/validate.ts","./src/liquidmetal/v1alpha1/catalog_pb.ts","./src/liquidmetal/v1alpha1/object_pb.ts","./src/liquidmetal/v1alpha1/rainbow_auth_pb.ts","./src/liquidmetal/v1alpha1/raindrop_pb.ts","./src/liquidmetal/v1alpha1/search_agent_pb.ts","./src/raindrop/index.test.ts","./src/raindrop/index.ts","./src/unsafe/codestore.test.ts","./src/unsafe/codestore.ts","./src/unsafe/framework.test.ts","./src/unsafe/framework.ts"],"version":"5.8.2"}
@@ -1,6 +0,0 @@
1
-
2
- ⠙⠹⠸⠼
3
- > @liquidmetal-ai/drizzle@0.2.11 lint
4
- > eslint . --max-warnings=0
5
-
6
- ⠼⠙
@@ -1,303 +0,0 @@
1
-
2
- 
3
- > @liquidmetal-ai/drizzle@0.2.11 test
4
- > vitest run
5
-
6
- 
7
-  RUN  v2.1.9 /Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/packages/drizzle
8
-
9
- [?25l · src/logging.test.ts (7)
10
- stdout | src/logging.test.ts > Logger > can log messages at a debug level
11
- { level: 'DEBUG', message: 'debug message', fields: {} }
12
-
13
- stdout | src/logging.test.ts > Logger > can log messages at a info level
14
- { level: 'INFO', message: 'info message', fields: {} }
15
-
16
- stdout | src/logging.test.ts > Logger > can log messages at a warn level
17
- { level: 'WARN', message: 'warn message', fields: {} }
18
-
19
- stdout | src/logging.test.ts > Logger > can log messages at an error level
20
- { level: 'ERROR', message: 'error message', fields: {} }
21
-
22
- [?25l · src/logging.test.ts (7)
23
- [?25l[?25l ✓ src/logging.test.ts (7)
24
- [?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l · src/appify/parse.test.ts (17)
25
- · src/appify/build.test.ts (10)
26
- ✓ src/logging.test.ts (7)
27
- [?25l[?25l[?25l · src/appify/parse.test.ts (17)
28
- ✓ src/appify/build.test.ts (10)
29
- ✓ src/logging.test.ts (7)
30
- [?25l · src/appify/parse.test.ts (17)
31
- ✓ src/appify/build.test.ts (10)
32
- · src/codestore.test.ts (9)
33
- ✓ src/logging.test.ts (7)
34
- [?25l ✓ src/appify/parse.test.ts (17)
35
- ✓ src/appify/build.test.ts (10)
36
- · src/unsafe/framework.test.ts (7)
37
- · src/codestore.test.ts (9)
38
- ✓ src/logging.test.ts (7)
39
- [?25lstderr | src/unsafe/framework.test.ts > getPackageVersion > should return null when package is not found
40
- Error reading package version: Error: Package version not found
41
- at Module.getPackageVersion (/Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/packages/drizzle/src/unsafe/framework.ts:108:11)
42
- at /Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/packages/drizzle/src/unsafe/framework.test.ts:151:21
43
- at file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/node_modules/@vitest/runner/dist/index.js:533:5
44
- at runTest (file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/node_modules/@vitest/runner/dist/index.js:1056:11)
45
- at runSuite (file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/node_modules/@vitest/runner/dist/index.js:1205:15)
46
- at runSuite (file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/node_modules/@vitest/runner/dist/index.js:1205:15)
47
- at runFiles (file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/node_modules/@vitest/runner/dist/index.js:1262:5)
48
- at startTests (file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/node_modules/@vitest/runner/dist/index.js:1271:3)
49
- at file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/dist/chunks/runBaseTests.3qpJUEJM.js:126:11
50
- at withEnv (file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/dist/chunks/runBaseTests.3qpJUEJM.js:90:5)
51
-
52
- [?25l · src/appify/validate.test.ts (17)
53
- ✓ src/appify/parse.test.ts (17)
54
- ✓ src/appify/build.test.ts (10)
55
- ❯ src/unsafe/framework.test.ts (7)
56
- ❯ getPackageVersion (7)
57
- ⠙ should detect npm package version
58
- · should detect yarn package version
59
- · should detect pnpm package version
60
- · should handle nested dependencies
61
- · should return null when package is not found
62
- · should search parent directories for package manager files
63
- · should handle command execution errors
64
- · src/codestore.test.ts (9)
65
- ✓ src/logging.test.ts (7)
66
- stderr | src/unsafe/framework.test.ts > getPackageVersion > should handle command execution errors
67
- Error executing npm list command: Error: Command failed
68
- at /Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/packages/drizzle/src/unsafe/framework.test.ts:192:9
69
- at mockCall (file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/node_modules/@vitest/spy/dist/index.js:61:17)
70
- at spy (file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/tinyspy/dist/index.js:45:80)
71
- at node:internal/util:456:21
72
- at new Promise (<anonymous>)
73
- at spy (node:internal/util:442:12)
74
- at getVersionFromCommand (/Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/packages/drizzle/src/unsafe/framework.ts:69:30)
75
- at Module.getPackageVersion (/Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/packages/drizzle/src/unsafe/framework.ts:102:31)
76
- at /Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/packages/drizzle/src/unsafe/framework.test.ts:202:21
77
- at file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/node_modules/@vitest/runner/dist/index.js:533:5
78
-
79
- [?25l · src/appify/validate.test.ts (17)
80
- ✓ src/appify/parse.test.ts (17)
81
- ✓ src/appify/build.test.ts (10)
82
- ❯ src/unsafe/framework.test.ts (7)
83
- ❯ getPackageVersion (7)
84
- ✓ should detect npm package version
85
- ✓ should detect yarn package version
86
- ✓ should detect pnpm package version
87
- ✓ should handle nested dependencies
88
- ✓ should return null when package is not found
89
- ✓ should search parent directories for package manager files
90
- ⠙ should handle command execution errors
91
- ❯ src/codestore.test.ts (9)
92
- ⠙ archive and unarchive
93
- · list bundle with files
94
- · read file from bundle
95
- · read missing file from bundle
96
- · delete file from bundle
97
- · for await of bundle
98
- · stat file from bundle
99
- · stat missing file from bundle
100
- · hash bundle
101
- ✓ src/logging.test.ts (7)
102
- stderr | src/unsafe/framework.test.ts > getPackageVersion > should handle command execution errors
103
- Error reading package version: Error: Package version not found
104
- at Module.getPackageVersion (/Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/packages/drizzle/src/unsafe/framework.ts:108:11)
105
- at /Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/packages/drizzle/src/unsafe/framework.test.ts:202:21
106
- at file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/node_modules/@vitest/runner/dist/index.js:533:5
107
- at runTest (file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/node_modules/@vitest/runner/dist/index.js:1056:11)
108
- at runSuite (file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/node_modules/@vitest/runner/dist/index.js:1205:15)
109
- at runSuite (file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/node_modules/@vitest/runner/dist/index.js:1205:15)
110
- at runFiles (file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/node_modules/@vitest/runner/dist/index.js:1262:5)
111
- at startTests (file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/node_modules/@vitest/runner/dist/index.js:1271:3)
112
- at file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/dist/chunks/runBaseTests.3qpJUEJM.js:126:11
113
- at withEnv (file:///Users/bosgood/dev/src/github.com/LiquidMetal-AI/liquidmetal/node_modules/vitest/dist/chunks/runBaseTests.3qpJUEJM.js:90:5)
114
-
115
- [?25l · src/appify/validate.test.ts (17)
116
- ✓ src/appify/parse.test.ts (17)
117
- ✓ src/appify/build.test.ts (10)
118
- ❯ src/unsafe/framework.test.ts (7)
119
- ❯ getPackageVersion (7)
120
- ✓ should detect npm package version
121
- ✓ should detect yarn package version
122
- ✓ should detect pnpm package version
123
- ✓ should handle nested dependencies
124
- ✓ should return null when package is not found
125
- ✓ should search parent directories for package manager files
126
- ⠹ should handle command execution errors
127
- ✓ src/codestore.test.ts (9)
128
- ✓ src/logging.test.ts (7)
129
- [?25l · src/appify/validate.test.ts (17)
130
- ✓ src/appify/parse.test.ts (17)
131
- ✓ src/appify/build.test.ts (10)
132
- ✓ src/unsafe/framework.test.ts (7)
133
- ✓ src/codestore.test.ts (9)
134
- ✓ src/logging.test.ts (7)
135
- [?25l[?25l[?25l ✓ src/appify/validate.test.ts (17)
136
- ✓ src/appify/parse.test.ts (17)
137
- ✓ src/appify/build.test.ts (10)
138
- ✓ src/unsafe/framework.test.ts (7)
139
- ✓ src/codestore.test.ts (9)
140
- ✓ src/logging.test.ts (7)
141
- [?25l[?25l[?25l[?25l[?25l[?25l ✓ src/appify/validate.test.ts (17)
142
- ✓ src/appify/parse.test.ts (17)
143
- ✓ src/appify/build.test.ts (10)
144
- ✓ src/unsafe/framework.test.ts (7)
145
- ✓ src/codestore.test.ts (9)
146
- ✓ src/logging.test.ts (7)
147
- · src/appify/index.test.ts (3)
148
- [?25l ✓ src/appify/validate.test.ts (17)
149
- ✓ src/appify/parse.test.ts (17)
150
- ✓ src/appify/build.test.ts (10)
151
- ✓ src/unsafe/framework.test.ts (7)
152
- ✓ src/codestore.test.ts (9)
153
- ✓ src/logging.test.ts (7)
154
- ✓ src/appify/index.test.ts (3)
155
- [?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l[?25l ✓ src/appify/validate.test.ts (17)
156
- ✓ src/appify/parse.test.ts (17)
157
- ✓ src/appify/build.test.ts (10)
158
- ✓ src/unsafe/framework.test.ts (7)
159
- ✓ src/codestore.test.ts (9)
160
- ✓ src/logging.test.ts (7)
161
- ✓ src/appify/index.test.ts (3)
162
- · src/raindrop/index.test.ts (1)
163
- [?25l[?25l ✓ src/appify/validate.test.ts (17)
164
- ✓ src/appify/parse.test.ts (17)
165
- ✓ src/appify/build.test.ts (10)
166
- ✓ src/unsafe/framework.test.ts (7)
167
- ✓ src/codestore.test.ts (9)
168
- ✓ src/logging.test.ts (7)
169
- ✓ src/appify/index.test.ts (3)
170
- · src/unsafe/codestore.test.ts (1)
171
- · src/raindrop/index.test.ts (1)
172
- [?25l ✓ src/appify/validate.test.ts (17)
173
- ✓ src/appify/parse.test.ts (17)
174
- ✓ src/appify/build.test.ts (10)
175
- ✓ src/unsafe/framework.test.ts (7)
176
- ✓ src/codestore.test.ts (9)
177
- ✓ src/logging.test.ts (7)
178
- ✓ src/appify/index.test.ts (3)
179
- · src/unsafe/codestore.test.ts (1)
180
- ✓ src/raindrop/index.test.ts (1)
181
- [?25l[?25l ✓ src/appify/validate.test.ts (17)
182
- ✓ src/appify/parse.test.ts (17)
183
- ✓ src/appify/build.test.ts (10)
184
- ✓ src/unsafe/framework.test.ts (7)
185
- ✓ src/codestore.test.ts (9)
186
- ✓ src/logging.test.ts (7)
187
- ✓ src/appify/index.test.ts (3)
188
- ❯ src/unsafe/codestore.test.ts (1)
189
- ⠙ FileSystemBundle maps to local files and their contents
190
- ✓ src/raindrop/index.test.ts (1)
191
- [?25l ✓ src/appify/validate.test.ts (17)
192
- ✓ src/appify/parse.test.ts (17)
193
- ✓ src/appify/build.test.ts (10)
194
- ✓ src/unsafe/framework.test.ts (7)
195
- ✓ src/codestore.test.ts (9)
196
- ✓ src/logging.test.ts (7)
197
- ✓ src/appify/index.test.ts (3)
198
- ❯ src/unsafe/codestore.test.ts (1)
199
- ⠹ FileSystemBundle maps to local files and their contents
200
- ✓ src/raindrop/index.test.ts (1)
201
- [?25l ✓ src/appify/validate.test.ts (17)
202
- ✓ src/appify/parse.test.ts (17)
203
- ✓ src/appify/build.test.ts (10)
204
- ✓ src/unsafe/framework.test.ts (7)
205
- ✓ src/codestore.test.ts (9)
206
- ✓ src/logging.test.ts (7)
207
- ✓ src/appify/index.test.ts (3)
208
- ❯ src/unsafe/codestore.test.ts (1)
209
- ⠸ FileSystemBundle maps to local files and their contents
210
- ✓ src/raindrop/index.test.ts (1)
211
- [?25l ✓ src/appify/validate.test.ts (17)
212
- ✓ src/appify/parse.test.ts (17)
213
- ✓ src/appify/build.test.ts (10)
214
- ✓ src/unsafe/framework.test.ts (7)
215
- ✓ src/codestore.test.ts (9)
216
- ✓ src/logging.test.ts (7)
217
- ✓ src/appify/index.test.ts (3)
218
- ❯ src/unsafe/codestore.test.ts (1)
219
- ⠼ FileSystemBundle maps to local files and their contents
220
- ✓ src/raindrop/index.test.ts (1)
221
- [?25l ✓ src/appify/validate.test.ts (17)
222
- ✓ src/appify/parse.test.ts (17)
223
- ✓ src/appify/build.test.ts (10)
224
- ✓ src/unsafe/framework.test.ts (7)
225
- ✓ src/codestore.test.ts (9)
226
- ✓ src/logging.test.ts (7)
227
- ✓ src/appify/index.test.ts (3)
228
- ❯ src/unsafe/codestore.test.ts (1)
229
- ⠴ FileSystemBundle maps to local files and their contents
230
- ✓ src/raindrop/index.test.ts (1)
231
- [?25l ✓ src/appify/validate.test.ts (17)
232
- ✓ src/appify/parse.test.ts (17)
233
- ✓ src/appify/build.test.ts (10)
234
- ✓ src/unsafe/framework.test.ts (7)
235
- ✓ src/codestore.test.ts (9)
236
- ✓ src/logging.test.ts (7)
237
- ✓ src/appify/index.test.ts (3)
238
- ❯ src/unsafe/codestore.test.ts (1)
239
- ⠦ FileSystemBundle maps to local files and their contents
240
- ✓ src/raindrop/index.test.ts (1)
241
- [?25l ✓ src/appify/validate.test.ts (17)
242
- ✓ src/appify/parse.test.ts (17)
243
- ✓ src/appify/build.test.ts (10)
244
- ✓ src/unsafe/framework.test.ts (7)
245
- ✓ src/codestore.test.ts (9)
246
- ✓ src/logging.test.ts (7)
247
- ✓ src/appify/index.test.ts (3)
248
- ❯ src/unsafe/codestore.test.ts (1)
249
- ⠧ FileSystemBundle maps to local files and their contents
250
- ✓ src/raindrop/index.test.ts (1)
251
- [?25l ✓ src/appify/validate.test.ts (17)
252
- ✓ src/appify/parse.test.ts (17)
253
- ✓ src/appify/build.test.ts (10)
254
- ✓ src/unsafe/framework.test.ts (7)
255
- ✓ src/codestore.test.ts (9)
256
- ✓ src/logging.test.ts (7)
257
- ✓ src/appify/index.test.ts (3)
258
- ❯ src/unsafe/codestore.test.ts (1)
259
- ⠇ FileSystemBundle maps to local files and their contents
260
- ✓ src/raindrop/index.test.ts (1)
261
- [?25l ✓ src/appify/validate.test.ts (17)
262
- ✓ src/appify/parse.test.ts (17)
263
- ✓ src/appify/build.test.ts (10)
264
- ✓ src/unsafe/framework.test.ts (7)
265
- ✓ src/codestore.test.ts (9)
266
- ✓ src/logging.test.ts (7)
267
- ✓ src/appify/index.test.ts (3)
268
- ❯ src/unsafe/codestore.test.ts (1)
269
- ⠏ FileSystemBundle maps to local files and their contents
270
- ✓ src/raindrop/index.test.ts (1)
271
- [?25l ✓ src/appify/validate.test.ts (17)
272
- ✓ src/appify/parse.test.ts (17)
273
- ✓ src/appify/build.test.ts (10)
274
- ✓ src/unsafe/framework.test.ts (7)
275
- ✓ src/codestore.test.ts (9)
276
- ✓ src/logging.test.ts (7)
277
- ✓ src/appify/index.test.ts (3)
278
- ✓ src/unsafe/codestore.test.ts (1)
279
- ✓ src/raindrop/index.test.ts (1)
280
- [?25l[?25l ✓ src/codestore.test.ts (9)
281
- ✓ src/logging.test.ts (7)
282
- ✓ src/appify/build.test.ts (10)
283
- ✓ src/appify/index.test.ts (3)
284
- ✓ src/appify/parse.test.ts (17)
285
- ✓ src/appify/validate.test.ts (17)
286
- ✓ src/raindrop/index.test.ts (1)
287
- ✓ src/unsafe/codestore.test.ts (1)
288
- ✓ src/unsafe/framework.test.ts (7)
289
-
290
-  Test Files  9 passed (9)
291
-  Tests  72 passed (72)
292
-  Start at  16:53:59
293
-  Duration  6.52s (transform 6.62s, setup 0ms, collect 13.01s, tests 784ms, environment 34ms, prepare 10.80s)
294
-
295
- [?25h[?25h⠙
296
- > @liquidmetal-ai/drizzle@0.2.11 posttest
297
- > npm run lint
298
-
299
- ⠙
300
- > @liquidmetal-ai/drizzle@0.2.11 lint
301
- > eslint . --max-warnings=0
302
-
303
- ⠙⠙