as-soon 0.0.10 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.cjs CHANGED
@@ -128,28 +128,29 @@ function listen(absolute_path, execute) {
128
128
  return __async(this, null, function* () {
129
129
  const exists = import_node_fs.default.existsSync(absolute_path);
130
130
  if (exists) {
131
- const isDirectory = exists && import_node_fs.default.statSync(absolute_path).isDirectory();
131
+ const isDirectory = import_node_fs.default.statSync(absolute_path).isDirectory();
132
132
  if (isDirectory) {
133
133
  subscribe_folder(absolute_path, execute);
134
134
  } else {
135
135
  subscribe_folder(import_node_path.default.dirname(absolute_path), execute, absolute_path);
136
136
  }
137
137
  } else {
138
- console.log(`${absolute_path} do not exist yet, listening on parent`);
139
- let tmp_subscription = yield import_watcher.default.subscribe(
140
- import_node_path.default.dirname(absolute_path),
141
- (err, events) => {
142
- for (const event of events) {
143
- if (event.type === "create" && import_node_path.default.normalize(event.path) === absolute_path) {
144
- tmp_subscription == null ? void 0 : tmp_subscription.unsubscribe();
145
- tmp_subscription = void 0;
146
- setTimeout((v) => {
147
- listen(absolute_path, execute);
148
- }, 500);
149
- }
138
+ const parent = import_node_path.default.dirname(absolute_path);
139
+ if (!import_node_fs.default.existsSync(parent)) {
140
+ console.error(`cannot listen on folder who have no parent yet: ${absolute_path}`);
141
+ process.exit(1);
142
+ }
143
+ let tmp_subscription = yield import_watcher.default.subscribe(parent, (err, events) => {
144
+ for (const event of events) {
145
+ if (event.type === "create" && import_node_path.default.normalize(event.path) === absolute_path) {
146
+ tmp_subscription == null ? void 0 : tmp_subscription.unsubscribe();
147
+ tmp_subscription = void 0;
148
+ setTimeout((v) => {
149
+ listen(absolute_path, execute);
150
+ }, 500);
150
151
  }
151
152
  }
152
- );
153
+ });
153
154
  }
154
155
  });
155
156
  }
package/dist/cli.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport {execFileSync} from 'child_process';\nimport watcher, {AsyncSubscription} from '@parcel/watcher';\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport {debounce} from 'lodash';\nimport {loadEnv} from 'ldenv';\n\nconst args = process.argv.slice(2);\n\nfunction error(msg: string) {\n\tconsole.error(msg);\n\tprocess.exit(1);\n}\n\nlet deploymentContext = 'localhost';\nlet argToConsume;\nlet command: string | undefined;\nlet commandArgs: string[] | undefined;\nconst options: {[key: string]: string[]} = {};\nfor (let i = 0; i < args.length; i++) {\n\tconst arg = args[i];\n\tif (arg.startsWith('--')) {\n\t\targToConsume = arg.substring(2);\n\t} else if (arg.startsWith('-')) {\n\t\targToConsume = arg.substring(1);\n\t} else {\n\t\tif (argToConsume) {\n\t\t\tif (options[argToConsume]) {\n\t\t\t\toptions[argToConsume].push(arg);\n\t\t\t} else {\n\t\t\t\toptions[argToConsume] = [arg];\n\t\t\t}\n\t\t\targToConsume = undefined;\n\t\t} else {\n\t\t\tcommand = arg;\n\t\t\tcommandArgs = args.slice(i + 1);\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nif (!command) {\n\terror(`please specify a command`);\n}\nconst commandToUse = command!;\n\nconsole.log(`\"${commandToUse} ${commandArgs?.join(' ') || ''}\"`);\n\nloadEnv({mode: deploymentContext});\n\nfunction _execute() {\n\ttry {\n\t\texecFileSync(commandToUse, commandArgs, {stdio: ['inherit', 'inherit', 'inherit']});\n\t} catch (err) {\n\t\tconsole.error('failed to execue', err);\n\t}\n\tconsole.log(`-------------------------------------`);\n}\n\n// let counter = 0;\nasync function subscribe_folder(absolute_path: string, execute: () => void, filename?: string) {\n\t// const c = ++counter;\n\tconst p = path.relative(process.cwd(), absolute_path) || '.';\n\tconst subscription = await watcher.subscribe(absolute_path, (err, events) => {\n\t\t// console.log(`Files changed under ${p} (${c})`);\n\t\tif (filename) {\n\t\t\tfor (const event of events) {\n\t\t\t\tif (path.normalize(event.path) === filename) {\n\t\t\t\t\tconsole.log(`\"${path.basename(filename)}\" changed under ${p}`);\n\t\t\t\t\texecute();\n\t\t\t\t} else if (event.type === 'delete' && event.path === absolute_path) {\n\t\t\t\t\tsubscription.unsubscribe();\n\t\t\t\t\tlisten(filename, execute);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log(`Files changed under ${p}`);\n\t\t\tfor (const event of events) {\n\t\t\t\tif (event.type === 'delete' && event.path === absolute_path) {\n\t\t\t\t\tsubscription.unsubscribe();\n\t\t\t\t\tlisten(absolute_path, execute);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\texecute();\n\t\t}\n\t});\n}\n\nasync function listen(absolute_path: string, execute: () => void) {\n\tconst exists = fs.existsSync(absolute_path);\n\n\tif (exists) {\n\t\tconst isDirectory = exists && fs.statSync(absolute_path).isDirectory();\n\t\tif (isDirectory) {\n\t\t\tsubscribe_folder(absolute_path, execute);\n\t\t} else {\n\t\t\tsubscribe_folder(path.dirname(absolute_path), execute, absolute_path);\n\t\t}\n\t} else {\n\t\tconsole.log(`${absolute_path} do not exist yet, listening on parent`);\n\t\tlet tmp_subscription: AsyncSubscription | undefined = await watcher.subscribe(\n\t\t\tpath.dirname(absolute_path),\n\t\t\t(err, events) => {\n\t\t\t\tfor (const event of events) {\n\t\t\t\t\tif (event.type === 'create' && path.normalize(event.path) === absolute_path) {\n\t\t\t\t\t\t// console.log(`${absolute_path} just got created, listening for it...`);\n\t\t\t\t\t\ttmp_subscription?.unsubscribe();\n\t\t\t\t\t\ttmp_subscription = undefined;\n\t\t\t\t\t\t// wrap in a timeout to ensure @parcel/watcher hook on the correct inode?\n\t\t\t\t\t\tsetTimeout((v) => {\n\t\t\t\t\t\t\tlisten(absolute_path, execute);\n\t\t\t\t\t\t}, 500);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n}\n\nasync function main() {\n\tconst execute = debounce(_execute, 200);\n\texecute();\n\tif (options['w']) {\n\t\tconst folders = options['w'].map((p) => path.normalize(path.join(process.cwd(), p)));\n\t\tfor (const folder of folders) {\n\t\t\tlisten(folder, execute);\n\n\t\t\tconsole.log(`Now listening on ${folder}`);\n\t\t\tconsole.log(`-------------------------------------`);\n\t\t}\n\t} else {\n\t\tconst folder = path.normalize(process.cwd());\n\t\tconsole.log(`listening on current folder: ${folder}`);\n\t\tlisten(folder, execute);\n\t}\n}\nmain();\n"],"mappings":"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","names":["path","watcher","fs"]}
1
+ {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport {execFileSync} from 'child_process';\nimport watcher, {AsyncSubscription} from '@parcel/watcher';\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport {debounce} from 'lodash';\nimport {loadEnv} from 'ldenv';\n\nconst args = process.argv.slice(2);\n\nfunction error(msg: string) {\n\tconsole.error(msg);\n\tprocess.exit(1);\n}\n\nlet deploymentContext = 'localhost';\nlet argToConsume;\nlet command: string | undefined;\nlet commandArgs: string[] | undefined;\nconst options: {[key: string]: string[]} = {};\nfor (let i = 0; i < args.length; i++) {\n\tconst arg = args[i];\n\tif (arg.startsWith('--')) {\n\t\targToConsume = arg.substring(2);\n\t} else if (arg.startsWith('-')) {\n\t\targToConsume = arg.substring(1);\n\t} else {\n\t\tif (argToConsume) {\n\t\t\tif (options[argToConsume]) {\n\t\t\t\toptions[argToConsume].push(arg);\n\t\t\t} else {\n\t\t\t\toptions[argToConsume] = [arg];\n\t\t\t}\n\t\t\targToConsume = undefined;\n\t\t} else {\n\t\t\tcommand = arg;\n\t\t\tcommandArgs = args.slice(i + 1);\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nif (!command) {\n\terror(`please specify a command`);\n}\nconst commandToUse = command!;\n\nconsole.log(`\"${commandToUse} ${commandArgs?.join(' ') || ''}\"`);\n\nloadEnv({mode: deploymentContext});\n\nfunction _execute() {\n\ttry {\n\t\texecFileSync(commandToUse, commandArgs, {stdio: ['inherit', 'inherit', 'inherit']});\n\t} catch (err) {\n\t\tconsole.error('failed to execue', err);\n\t}\n\tconsole.log(`-------------------------------------`);\n}\n\n// let counter = 0;\nasync function subscribe_folder(absolute_path: string, execute: () => void, filename?: string) {\n\t// const c = ++counter;\n\tconst p = path.relative(process.cwd(), absolute_path) || '.';\n\tconst subscription = await watcher.subscribe(absolute_path, (err, events) => {\n\t\t// console.log(`Files changed under ${p} (${c})`);\n\t\tif (filename) {\n\t\t\tfor (const event of events) {\n\t\t\t\tif (path.normalize(event.path) === filename) {\n\t\t\t\t\tconsole.log(`\"${path.basename(filename)}\" changed under ${p}`);\n\t\t\t\t\texecute();\n\t\t\t\t} else if (event.type === 'delete' && event.path === absolute_path) {\n\t\t\t\t\tsubscription.unsubscribe();\n\t\t\t\t\tlisten(filename, execute);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log(`Files changed under ${p}`);\n\t\t\tfor (const event of events) {\n\t\t\t\tif (event.type === 'delete' && event.path === absolute_path) {\n\t\t\t\t\tsubscription.unsubscribe();\n\t\t\t\t\tlisten(absolute_path, execute);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\texecute();\n\t\t}\n\t});\n}\n\nasync function listen(absolute_path: string, execute: () => void) {\n\tconst exists = fs.existsSync(absolute_path);\n\n\tif (exists) {\n\t\tconst isDirectory = fs.statSync(absolute_path).isDirectory();\n\t\tif (isDirectory) {\n\t\t\t// console.log(`listen for folder changes...`);\n\t\t\tsubscribe_folder(absolute_path, execute);\n\t\t} else {\n\t\t\t// console.log(`listen for file changes...`);\n\t\t\tsubscribe_folder(path.dirname(absolute_path), execute, absolute_path);\n\t\t}\n\t} else {\n\t\tconst parent = path.dirname(absolute_path);\n\t\tif (!fs.existsSync(parent)) {\n\t\t\tconsole.error(`cannot listen on folder who have no parent yet: ${absolute_path}`);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\t// console.log(`${absolute_path} do not exist yet, listening on parent : ${parent}`);\n\t\tlet tmp_subscription: AsyncSubscription | undefined = await watcher.subscribe(parent, (err, events) => {\n\t\t\tfor (const event of events) {\n\t\t\t\tif (event.type === 'create' && path.normalize(event.path) === absolute_path) {\n\t\t\t\t\t// console.log(`${absolute_path} just got created, listening for it...`);\n\t\t\t\t\ttmp_subscription?.unsubscribe();\n\t\t\t\t\ttmp_subscription = undefined;\n\t\t\t\t\t// wrap in a timeout to ensure @parcel/watcher hook on the correct inode?\n\t\t\t\t\tsetTimeout((v) => {\n\t\t\t\t\t\tlisten(absolute_path, execute);\n\t\t\t\t\t}, 500);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nasync function main() {\n\tconst execute = debounce(_execute, 200);\n\texecute();\n\tif (options['w']) {\n\t\tconst folders = options['w'].map((p) => path.normalize(path.join(process.cwd(), p)));\n\t\tfor (const folder of folders) {\n\t\t\tlisten(folder, execute);\n\n\t\t\tconsole.log(`Now listening on ${folder}`);\n\t\t\tconsole.log(`-------------------------------------`);\n\t\t}\n\t} else {\n\t\tconst folder = path.normalize(process.cwd());\n\t\tconsole.log(`listening on current folder: ${folder}`);\n\t\tlisten(folder, execute);\n\t}\n}\nmain();\n"],"mappings":"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","names":["path","watcher","fs"]}
package/dist/cli.js CHANGED
@@ -88,28 +88,29 @@ function listen(absolute_path, execute) {
88
88
  return __async(this, null, function* () {
89
89
  const exists = fs.existsSync(absolute_path);
90
90
  if (exists) {
91
- const isDirectory = exists && fs.statSync(absolute_path).isDirectory();
91
+ const isDirectory = fs.statSync(absolute_path).isDirectory();
92
92
  if (isDirectory) {
93
93
  subscribe_folder(absolute_path, execute);
94
94
  } else {
95
95
  subscribe_folder(path.dirname(absolute_path), execute, absolute_path);
96
96
  }
97
97
  } else {
98
- console.log(`${absolute_path} do not exist yet, listening on parent`);
99
- let tmp_subscription = yield watcher.subscribe(
100
- path.dirname(absolute_path),
101
- (err, events) => {
102
- for (const event of events) {
103
- if (event.type === "create" && path.normalize(event.path) === absolute_path) {
104
- tmp_subscription == null ? void 0 : tmp_subscription.unsubscribe();
105
- tmp_subscription = void 0;
106
- setTimeout((v) => {
107
- listen(absolute_path, execute);
108
- }, 500);
109
- }
98
+ const parent = path.dirname(absolute_path);
99
+ if (!fs.existsSync(parent)) {
100
+ console.error(`cannot listen on folder who have no parent yet: ${absolute_path}`);
101
+ process.exit(1);
102
+ }
103
+ let tmp_subscription = yield watcher.subscribe(parent, (err, events) => {
104
+ for (const event of events) {
105
+ if (event.type === "create" && path.normalize(event.path) === absolute_path) {
106
+ tmp_subscription == null ? void 0 : tmp_subscription.unsubscribe();
107
+ tmp_subscription = void 0;
108
+ setTimeout((v) => {
109
+ listen(absolute_path, execute);
110
+ }, 500);
110
111
  }
111
112
  }
112
- );
113
+ });
113
114
  }
114
115
  });
115
116
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport {execFileSync} from 'child_process';\nimport watcher, {AsyncSubscription} from '@parcel/watcher';\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport {debounce} from 'lodash';\nimport {loadEnv} from 'ldenv';\n\nconst args = process.argv.slice(2);\n\nfunction error(msg: string) {\n\tconsole.error(msg);\n\tprocess.exit(1);\n}\n\nlet deploymentContext = 'localhost';\nlet argToConsume;\nlet command: string | undefined;\nlet commandArgs: string[] | undefined;\nconst options: {[key: string]: string[]} = {};\nfor (let i = 0; i < args.length; i++) {\n\tconst arg = args[i];\n\tif (arg.startsWith('--')) {\n\t\targToConsume = arg.substring(2);\n\t} else if (arg.startsWith('-')) {\n\t\targToConsume = arg.substring(1);\n\t} else {\n\t\tif (argToConsume) {\n\t\t\tif (options[argToConsume]) {\n\t\t\t\toptions[argToConsume].push(arg);\n\t\t\t} else {\n\t\t\t\toptions[argToConsume] = [arg];\n\t\t\t}\n\t\t\targToConsume = undefined;\n\t\t} else {\n\t\t\tcommand = arg;\n\t\t\tcommandArgs = args.slice(i + 1);\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nif (!command) {\n\terror(`please specify a command`);\n}\nconst commandToUse = command!;\n\nconsole.log(`\"${commandToUse} ${commandArgs?.join(' ') || ''}\"`);\n\nloadEnv({mode: deploymentContext});\n\nfunction _execute() {\n\ttry {\n\t\texecFileSync(commandToUse, commandArgs, {stdio: ['inherit', 'inherit', 'inherit']});\n\t} catch (err) {\n\t\tconsole.error('failed to execue', err);\n\t}\n\tconsole.log(`-------------------------------------`);\n}\n\n// let counter = 0;\nasync function subscribe_folder(absolute_path: string, execute: () => void, filename?: string) {\n\t// const c = ++counter;\n\tconst p = path.relative(process.cwd(), absolute_path) || '.';\n\tconst subscription = await watcher.subscribe(absolute_path, (err, events) => {\n\t\t// console.log(`Files changed under ${p} (${c})`);\n\t\tif (filename) {\n\t\t\tfor (const event of events) {\n\t\t\t\tif (path.normalize(event.path) === filename) {\n\t\t\t\t\tconsole.log(`\"${path.basename(filename)}\" changed under ${p}`);\n\t\t\t\t\texecute();\n\t\t\t\t} else if (event.type === 'delete' && event.path === absolute_path) {\n\t\t\t\t\tsubscription.unsubscribe();\n\t\t\t\t\tlisten(filename, execute);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log(`Files changed under ${p}`);\n\t\t\tfor (const event of events) {\n\t\t\t\tif (event.type === 'delete' && event.path === absolute_path) {\n\t\t\t\t\tsubscription.unsubscribe();\n\t\t\t\t\tlisten(absolute_path, execute);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\texecute();\n\t\t}\n\t});\n}\n\nasync function listen(absolute_path: string, execute: () => void) {\n\tconst exists = fs.existsSync(absolute_path);\n\n\tif (exists) {\n\t\tconst isDirectory = exists && fs.statSync(absolute_path).isDirectory();\n\t\tif (isDirectory) {\n\t\t\tsubscribe_folder(absolute_path, execute);\n\t\t} else {\n\t\t\tsubscribe_folder(path.dirname(absolute_path), execute, absolute_path);\n\t\t}\n\t} else {\n\t\tconsole.log(`${absolute_path} do not exist yet, listening on parent`);\n\t\tlet tmp_subscription: AsyncSubscription | undefined = await watcher.subscribe(\n\t\t\tpath.dirname(absolute_path),\n\t\t\t(err, events) => {\n\t\t\t\tfor (const event of events) {\n\t\t\t\t\tif (event.type === 'create' && path.normalize(event.path) === absolute_path) {\n\t\t\t\t\t\t// console.log(`${absolute_path} just got created, listening for it...`);\n\t\t\t\t\t\ttmp_subscription?.unsubscribe();\n\t\t\t\t\t\ttmp_subscription = undefined;\n\t\t\t\t\t\t// wrap in a timeout to ensure @parcel/watcher hook on the correct inode?\n\t\t\t\t\t\tsetTimeout((v) => {\n\t\t\t\t\t\t\tlisten(absolute_path, execute);\n\t\t\t\t\t\t}, 500);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n}\n\nasync function main() {\n\tconst execute = debounce(_execute, 200);\n\texecute();\n\tif (options['w']) {\n\t\tconst folders = options['w'].map((p) => path.normalize(path.join(process.cwd(), p)));\n\t\tfor (const folder of folders) {\n\t\t\tlisten(folder, execute);\n\n\t\t\tconsole.log(`Now listening on ${folder}`);\n\t\t\tconsole.log(`-------------------------------------`);\n\t\t}\n\t} else {\n\t\tconst folder = path.normalize(process.cwd());\n\t\tconsole.log(`listening on current folder: ${folder}`);\n\t\tlisten(folder, execute);\n\t}\n}\nmain();\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport {execFileSync} from 'child_process';\nimport watcher, {AsyncSubscription} from '@parcel/watcher';\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport {debounce} from 'lodash';\nimport {loadEnv} from 'ldenv';\n\nconst args = process.argv.slice(2);\n\nfunction error(msg: string) {\n\tconsole.error(msg);\n\tprocess.exit(1);\n}\n\nlet deploymentContext = 'localhost';\nlet argToConsume;\nlet command: string | undefined;\nlet commandArgs: string[] | undefined;\nconst options: {[key: string]: string[]} = {};\nfor (let i = 0; i < args.length; i++) {\n\tconst arg = args[i];\n\tif (arg.startsWith('--')) {\n\t\targToConsume = arg.substring(2);\n\t} else if (arg.startsWith('-')) {\n\t\targToConsume = arg.substring(1);\n\t} else {\n\t\tif (argToConsume) {\n\t\t\tif (options[argToConsume]) {\n\t\t\t\toptions[argToConsume].push(arg);\n\t\t\t} else {\n\t\t\t\toptions[argToConsume] = [arg];\n\t\t\t}\n\t\t\targToConsume = undefined;\n\t\t} else {\n\t\t\tcommand = arg;\n\t\t\tcommandArgs = args.slice(i + 1);\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nif (!command) {\n\terror(`please specify a command`);\n}\nconst commandToUse = command!;\n\nconsole.log(`\"${commandToUse} ${commandArgs?.join(' ') || ''}\"`);\n\nloadEnv({mode: deploymentContext});\n\nfunction _execute() {\n\ttry {\n\t\texecFileSync(commandToUse, commandArgs, {stdio: ['inherit', 'inherit', 'inherit']});\n\t} catch (err) {\n\t\tconsole.error('failed to execue', err);\n\t}\n\tconsole.log(`-------------------------------------`);\n}\n\n// let counter = 0;\nasync function subscribe_folder(absolute_path: string, execute: () => void, filename?: string) {\n\t// const c = ++counter;\n\tconst p = path.relative(process.cwd(), absolute_path) || '.';\n\tconst subscription = await watcher.subscribe(absolute_path, (err, events) => {\n\t\t// console.log(`Files changed under ${p} (${c})`);\n\t\tif (filename) {\n\t\t\tfor (const event of events) {\n\t\t\t\tif (path.normalize(event.path) === filename) {\n\t\t\t\t\tconsole.log(`\"${path.basename(filename)}\" changed under ${p}`);\n\t\t\t\t\texecute();\n\t\t\t\t} else if (event.type === 'delete' && event.path === absolute_path) {\n\t\t\t\t\tsubscription.unsubscribe();\n\t\t\t\t\tlisten(filename, execute);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log(`Files changed under ${p}`);\n\t\t\tfor (const event of events) {\n\t\t\t\tif (event.type === 'delete' && event.path === absolute_path) {\n\t\t\t\t\tsubscription.unsubscribe();\n\t\t\t\t\tlisten(absolute_path, execute);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\texecute();\n\t\t}\n\t});\n}\n\nasync function listen(absolute_path: string, execute: () => void) {\n\tconst exists = fs.existsSync(absolute_path);\n\n\tif (exists) {\n\t\tconst isDirectory = fs.statSync(absolute_path).isDirectory();\n\t\tif (isDirectory) {\n\t\t\t// console.log(`listen for folder changes...`);\n\t\t\tsubscribe_folder(absolute_path, execute);\n\t\t} else {\n\t\t\t// console.log(`listen for file changes...`);\n\t\t\tsubscribe_folder(path.dirname(absolute_path), execute, absolute_path);\n\t\t}\n\t} else {\n\t\tconst parent = path.dirname(absolute_path);\n\t\tif (!fs.existsSync(parent)) {\n\t\t\tconsole.error(`cannot listen on folder who have no parent yet: ${absolute_path}`);\n\t\t\tprocess.exit(1);\n\t\t}\n\t\t// console.log(`${absolute_path} do not exist yet, listening on parent : ${parent}`);\n\t\tlet tmp_subscription: AsyncSubscription | undefined = await watcher.subscribe(parent, (err, events) => {\n\t\t\tfor (const event of events) {\n\t\t\t\tif (event.type === 'create' && path.normalize(event.path) === absolute_path) {\n\t\t\t\t\t// console.log(`${absolute_path} just got created, listening for it...`);\n\t\t\t\t\ttmp_subscription?.unsubscribe();\n\t\t\t\t\ttmp_subscription = undefined;\n\t\t\t\t\t// wrap in a timeout to ensure @parcel/watcher hook on the correct inode?\n\t\t\t\t\tsetTimeout((v) => {\n\t\t\t\t\t\tlisten(absolute_path, execute);\n\t\t\t\t\t}, 500);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n\nasync function main() {\n\tconst execute = debounce(_execute, 200);\n\texecute();\n\tif (options['w']) {\n\t\tconst folders = options['w'].map((p) => path.normalize(path.join(process.cwd(), p)));\n\t\tfor (const folder of folders) {\n\t\t\tlisten(folder, execute);\n\n\t\t\tconsole.log(`Now listening on ${folder}`);\n\t\t\tconsole.log(`-------------------------------------`);\n\t\t}\n\t} else {\n\t\tconst folder = path.normalize(process.cwd());\n\t\tconsole.log(`listening on current folder: ${folder}`);\n\t\tlisten(folder, execute);\n\t}\n}\nmain();\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "as-soon",
3
- "version": "0.0.10",
3
+ "version": "0.0.11",
4
4
  "description": "watch and execute",
5
5
  "publishConfig": {
6
6
  "access": "public"
package/src/cli.ts CHANGED
@@ -93,30 +93,34 @@ async function listen(absolute_path: string, execute: () => void) {
93
93
  const exists = fs.existsSync(absolute_path);
94
94
 
95
95
  if (exists) {
96
- const isDirectory = exists && fs.statSync(absolute_path).isDirectory();
96
+ const isDirectory = fs.statSync(absolute_path).isDirectory();
97
97
  if (isDirectory) {
98
+ // console.log(`listen for folder changes...`);
98
99
  subscribe_folder(absolute_path, execute);
99
100
  } else {
101
+ // console.log(`listen for file changes...`);
100
102
  subscribe_folder(path.dirname(absolute_path), execute, absolute_path);
101
103
  }
102
104
  } else {
103
- console.log(`${absolute_path} do not exist yet, listening on parent`);
104
- let tmp_subscription: AsyncSubscription | undefined = await watcher.subscribe(
105
- path.dirname(absolute_path),
106
- (err, events) => {
107
- for (const event of events) {
108
- if (event.type === 'create' && path.normalize(event.path) === absolute_path) {
109
- // console.log(`${absolute_path} just got created, listening for it...`);
110
- tmp_subscription?.unsubscribe();
111
- tmp_subscription = undefined;
112
- // wrap in a timeout to ensure @parcel/watcher hook on the correct inode?
113
- setTimeout((v) => {
114
- listen(absolute_path, execute);
115
- }, 500);
116
- }
105
+ const parent = path.dirname(absolute_path);
106
+ if (!fs.existsSync(parent)) {
107
+ console.error(`cannot listen on folder who have no parent yet: ${absolute_path}`);
108
+ process.exit(1);
109
+ }
110
+ // console.log(`${absolute_path} do not exist yet, listening on parent : ${parent}`);
111
+ let tmp_subscription: AsyncSubscription | undefined = await watcher.subscribe(parent, (err, events) => {
112
+ for (const event of events) {
113
+ if (event.type === 'create' && path.normalize(event.path) === absolute_path) {
114
+ // console.log(`${absolute_path} just got created, listening for it...`);
115
+ tmp_subscription?.unsubscribe();
116
+ tmp_subscription = undefined;
117
+ // wrap in a timeout to ensure @parcel/watcher hook on the correct inode?
118
+ setTimeout((v) => {
119
+ listen(absolute_path, execute);
120
+ }, 500);
117
121
  }
118
122
  }
119
- );
123
+ });
120
124
  }
121
125
  }
122
126